{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# Gaussian Processes (Julia)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "This example demonstrates [GaussianProcesses.jl](https://github.com/STOR-i/GaussianProcesses.jl). We fit the model, tune its hyperparameters with GridSearchCV, and compute the cross-validation score."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "\n",
      "WARNING: deprecated syntax \"typealias MatF64 AbstractMatrix{Float64}\" at /Users/cedric/.julia/v0.6/GaussianProcesses/src/GaussianProcesses.jl:15.\n",
      "Use \"const MatF64 = AbstractMatrix{Float64}\" instead.\n",
      "\n",
      "WARNING: deprecated syntax \"typealias VecF64 AbstractVector{Float64}\" at /Users/cedric/.julia/v0.6/GaussianProcesses/src/GaussianProcesses.jl:16.\n",
      "Use \"const VecF64 = AbstractVector{Float64}\" instead.\n",
      "\n",
      "WARNING: deprecated syntax \"abstract Mean\" at /Users/cedric/.julia/v0.6/GaussianProcesses/src/means/meanFunctions.jl:6.\n",
      "Use \"abstract type Mean end\" instead.\n",
      "\n",
      "WARNING: deprecated syntax \"abstract Kernel\" at /Users/cedric/.julia/v0.6/GaussianProcesses/src/kernels/kernels.jl:6.\n",
      "Use \"abstract type Kernel end\" instead.\n",
      "\n",
      "WARNING: deprecated syntax \"abstract KernelData\" at /Users/cedric/.julia/v0.6/GaussianProcesses/src/kernels/kernels.jl:15.\n",
      "Use \"abstract type KernelData end\" instead.\n",
      "\n",
      "WARNING: deprecated syntax \"abstract Stationary<:Kernel\" at /Users/cedric/.julia/v0.6/GaussianProcesses/src/kernels/stationary.jl:7.\n",
      "Use \"abstract type Stationary<:Kernel end\" instead.\n",
      "\n",
      "WARNING: deprecated syntax \"abstract StationaryData<:KernelData\" at /Users/cedric/.julia/v0.6/GaussianProcesses/src/kernels/stationary.jl:8.\n",
      "Use \"abstract type StationaryData<:KernelData end\" instead.\n",
      "\n",
      "WARNING: deprecated syntax \"abstract Isotropic<:Stationary\" at /Users/cedric/.julia/v0.6/GaussianProcesses/src/kernels/stationary.jl:70.\n",
      "Use \"abstract type Isotropic<:Stationary end\" instead.\n",
      "\n",
      "WARNING: deprecated syntax \"abstract StationaryARD<:Stationary\" at /Users/cedric/.julia/v0.6/GaussianProcesses/src/kernels/stationary.jl:108.\n",
      "Use \"abstract type StationaryARD<:Stationary end\" instead.\n",
      "\n",
      "WARNING: deprecated syntax \"abstract MaternIso<:Isotropic\" at /Users/cedric/.julia/v0.6/GaussianProcesses/src/kernels/mat.jl:3.\n",
      "Use \"abstract type MaternIso<:Isotropic end\" instead.\n",
      "\n",
      "WARNING: deprecated syntax \"abstract MaternARD<:StationaryARD\" at /Users/cedric/.julia/v0.6/GaussianProcesses/src/kernels/mat.jl:4.\n",
      "Use \"abstract type MaternARD<:StationaryARD end\" instead.\n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "10-element Array{Float64,1}:\n",
       " -0.152869\n",
       "  0.294195\n",
       "  0.136808\n",
       "  0.959604\n",
       " -0.236843\n",
       " -0.209638\n",
       "  0.977491\n",
       "  0.816858\n",
       " -0.246879\n",
       " -0.547982"
      ]
     },
     "execution_count": 1,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "using ScikitLearn\n",
    "using ScikitLearn.GridSearch\n",
    "using PyPlot\n",
    "using GaussianProcesses: GP, MeanZero, SE\n",
    "\n",
    "srand(42)\n",
    "# Training data\n",
    "n = 10\n",
    "x = 2π * rand(n, 1)\n",
    "y = sin.(x[:, 1]) + 0.05*randn(n)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Fit a GP with hand-specified parameters:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {},
   "outputs": [],
   "source": [
    "# Select mean and covariance function\n",
    "mZero = MeanZero()                   # Zero mean function\n",
    "kern = SE(0.0,0.0)                   # Squared exponential kernel with parameters\n",
    "                                     # log(ℓ) = 0.0, log(σ) = 0.0\n",
    "gp = fit!(GP(m=mZero,k=kern, logNoise=-1.0), x,y);"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Use cross-validation to find the optimal noise level and (log) signal standard deviation σ"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "\u001b[1m\u001b[33mWARNING: \u001b[39m\u001b[22m\u001b[33mexp{T <: Number}(x::AbstractArray{T}) is deprecated, use exp.(x) instead.\u001b[39m\n",
      "Stacktrace:\n",
      " [1] \u001b[1mdepwarn\u001b[22m\u001b[22m\u001b[1m(\u001b[22m\u001b[22m::String, ::Symbol\u001b[1m)\u001b[22m\u001b[22m at \u001b[1m./deprecated.jl:70\u001b[22m\u001b[22m\n",
      " [2] \u001b[1mexp\u001b[22m\u001b[22m\u001b[1m(\u001b[22m\u001b[22m::Array{Float64,1}\u001b[1m)\u001b[22m\u001b[22m at \u001b[1m./deprecated.jl:57\u001b[22m\u001b[22m\n",
      " [3] \u001b[1mset_params!\u001b[22m\u001b[22m\u001b[1m(\u001b[22m\u001b[22m::GaussianProcesses.SEIso, ::Array{Float64,1}\u001b[1m)\u001b[22m\u001b[22m at \u001b[1m/Users/cedric/.julia/v0.6/GaussianProcesses/src/kernels/se_iso.jl:18\u001b[22m\u001b[22m\n",
      " [4] \u001b[1m#set_params!#33\u001b[22m\u001b[22m\u001b[1m(\u001b[22m\u001b[22m::Array{Any,1}, ::Function, ::GaussianProcesses.SEIso\u001b[1m)\u001b[22m\u001b[22m at \u001b[1m/Users/cedric/.julia/v0.6/GaussianProcesses/src/glue/ScikitLearn.jl:93\u001b[22m\u001b[22m\n",
      " [5] \u001b[1m(::ScikitLearnBase.#kw##set_params!)\u001b[22m\u001b[22m\u001b[1m(\u001b[22m\u001b[22m::Array{Any,1}, ::ScikitLearnBase.#set_params!, ::GaussianProcesses.SEIso\u001b[1m)\u001b[22m\u001b[22m at \u001b[1m./<missing>:0\u001b[22m\u001b[22m\n",
      " [6] \u001b[1m#set_params!#32\u001b[22m\u001b[22m\u001b[1m(\u001b[22m\u001b[22m::Array{Any,1}, ::Function, ::GaussianProcesses.GP\u001b[1m)\u001b[22m\u001b[22m at \u001b[1m/Users/cedric/.julia/v0.6/GaussianProcesses/src/glue/ScikitLearn.jl:77\u001b[22m\u001b[22m\n",
      " [7] \u001b[1m(::ScikitLearnBase.#kw##set_params!)\u001b[22m\u001b[22m\u001b[1m(\u001b[22m\u001b[22m::Array{Any,1}, ::ScikitLearnBase.#set_params!, ::GaussianProcesses.GP\u001b[1m)\u001b[22m\u001b[22m at \u001b[1m./<missing>:0\u001b[22m\u001b[22m\n",
      " [8] \u001b[1m#_fit_and_score#96\u001b[22m\u001b[22m\u001b[1m(\u001b[22m\u001b[22m::Bool, ::Bool, ::String, ::Function, ::GaussianProcesses.GP, ::Array{Float64,2}, ::Array{Float64,1}, ::Function, ::Array{Int64,1}, ::Array{Int64,1}, ::Int64, ::Dict{Symbol,Any}, ::Dict{Symbol,Any}\u001b[1m)\u001b[22m\u001b[22m at \u001b[1m/Users/cedric/.julia/v0.6/ScikitLearn/src/cross_validation.jl:559\u001b[22m\u001b[22m\n",
      " [9] \u001b[1m(::ScikitLearn.Skcore.#kw##_fit_and_score)\u001b[22m\u001b[22m\u001b[1m(\u001b[22m\u001b[22m::Array{Any,1}, ::ScikitLearn.Skcore.#_fit_and_score, ::GaussianProcesses.GP, ::Array{Float64,2}, ::Array{Float64,1}, ::Function, ::Array{Int64,1}, ::Array{Int64,1}, ::Int64, ::Dict{Symbol,Any}, ::Dict{Symbol,Any}\u001b[1m)\u001b[22m\u001b[22m at \u001b[1m./<missing>:0\u001b[22m\u001b[22m\n",
      " [10] \u001b[1m(::ScikitLearn.Skcore.##110#113{Dict{Any,Any},ScikitLearn.Skcore.GridSearchCV,Array{Float64,2},Array{Float64,1}})\u001b[22m\u001b[22m\u001b[1m(\u001b[22m\u001b[22m::Tuple{Array{Int64,1},Array{Int64,1}}\u001b[1m)\u001b[22m\u001b[22m at \u001b[1m./<missing>:0\u001b[22m\u001b[22m\n",
      " [11] \u001b[1mcollect\u001b[22m\u001b[22m\u001b[1m(\u001b[22m\u001b[22m::Base.Generator{Array{Tuple{Array{Int64,1},Array{Int64,1}},1},ScikitLearn.Skcore.##110#113{Dict{Any,Any},ScikitLearn.Skcore.GridSearchCV,Array{Float64,2},Array{Float64,1}}}\u001b[1m)\u001b[22m\u001b[22m at \u001b[1m./array.jl:441\u001b[22m\u001b[22m\n",
      " [12] \u001b[1mcopy!\u001b[22m\u001b[22m\u001b[1m(\u001b[22m\u001b[22m::Array{Any,1}, ::Base.Generator{ScikitLearn.Skcore.ParameterGrid,ScikitLearn.Skcore.##109#112{ScikitLearn.Skcore.GridSearchCV,Array{Float64,2},Array{Float64,1}}}\u001b[1m)\u001b[22m\u001b[22m at \u001b[1m./abstractarray.jl:572\u001b[22m\u001b[22m\n",
      " [13] \u001b[1m_fit!\u001b[22m\u001b[22m\u001b[1m(\u001b[22m\u001b[22m::ScikitLearn.Skcore.GridSearchCV, ::Array{Float64,2}, ::Array{Float64,1}, ::ScikitLearn.Skcore.ParameterGrid\u001b[1m)\u001b[22m\u001b[22m at \u001b[1m/Users/cedric/.julia/v0.6/ScikitLearn/src/grid_search.jl:274\u001b[22m\u001b[22m\n",
      " [14] \u001b[1mfit!\u001b[22m\u001b[22m\u001b[1m(\u001b[22m\u001b[22m::ScikitLearn.Skcore.GridSearchCV, ::Array{Float64,2}, ::Array{Float64,1}\u001b[1m)\u001b[22m\u001b[22m at \u001b[1m/Users/cedric/.julia/v0.6/ScikitLearn/src/grid_search.jl:558\u001b[22m\u001b[22m\n",
      " [15] \u001b[1minclude_string\u001b[22m\u001b[22m\u001b[1m(\u001b[22m\u001b[22m::String, ::String\u001b[1m)\u001b[22m\u001b[22m at \u001b[1m./loading.jl:515\u001b[22m\u001b[22m\n",
      " [16] \u001b[1minclude_string\u001b[22m\u001b[22m\u001b[1m(\u001b[22m\u001b[22m::Module, ::String, ::String\u001b[1m)\u001b[22m\u001b[22m at \u001b[1m/Users/cedric/.julia/v0.6/Compat/src/Compat.jl:478\u001b[22m\u001b[22m\n",
      " [17] \u001b[1mexecute_request\u001b[22m\u001b[22m\u001b[1m(\u001b[22m\u001b[22m::ZMQ.Socket, ::IJulia.Msg\u001b[1m)\u001b[22m\u001b[22m at \u001b[1m/Users/cedric/.julia/v0.6/IJulia/src/execute_request.jl:154\u001b[22m\u001b[22m\n",
      " [18] \u001b[1meventloop\u001b[22m\u001b[22m\u001b[1m(\u001b[22m\u001b[22m::ZMQ.Socket\u001b[1m)\u001b[22m\u001b[22m at \u001b[1m/Users/cedric/.julia/v0.6/IJulia/src/eventloop.jl:8\u001b[22m\u001b[22m\n",
      " [19] \u001b[1m(::IJulia.##14#17)\u001b[22m\u001b[22m\u001b[1m(\u001b[22m\u001b[22m\u001b[1m)\u001b[22m\u001b[22m at \u001b[1m./task.jl:335\u001b[22m\u001b[22m\n",
      "while loading In[3], in expression starting on line 1\n",
      "\u001b[1m\u001b[33mWARNING: \u001b[39m\u001b[22m\u001b[33mArray{T}(::Type{T}, m::Int) is deprecated, use Array{T}(m) instead.\u001b[39m\n",
      "Stacktrace:\n",
      " [1] \u001b[1mdepwarn\u001b[22m\u001b[22m\u001b[1m(\u001b[22m\u001b[22m::String, ::Symbol\u001b[1m)\u001b[22m\u001b[22m at \u001b[1m./deprecated.jl:70\u001b[22m\u001b[22m\n",
      " [2] \u001b[1mArray\u001b[22m\u001b[22m\u001b[1m(\u001b[22m\u001b[22m::Type{Float64}, ::Int64\u001b[1m)\u001b[22m\u001b[22m at \u001b[1m./deprecated.jl:57\u001b[22m\u001b[22m\n",
      " [3] \u001b[1m#predict#17\u001b[22m\u001b[22m\u001b[1m(\u001b[22m\u001b[22m::Bool, ::Function, ::GaussianProcesses.GP, ::Array{Float64,2}\u001b[1m)\u001b[22m\u001b[22m at \u001b[1m/Users/cedric/.julia/v0.6/GaussianProcesses/src/GP.jl:206\u001b[22m\u001b[22m\n",
      " [4] \u001b[1m(::GaussianProcesses.#kw##predict)\u001b[22m\u001b[22m\u001b[1m(\u001b[22m\u001b[22m::Array{Any,1}, ::GaussianProcesses.#predict, ::GaussianProcesses.GP, ::Array{Float64,2}\u001b[1m)\u001b[22m\u001b[22m at \u001b[1m./<missing>:0\u001b[22m\u001b[22m\n",
      " [5] \u001b[1m#predict#29\u001b[22m\u001b[22m\u001b[1m(\u001b[22m\u001b[22m::Bool, ::Function, ::GaussianProcesses.GP, ::Array{Float64,2}\u001b[1m)\u001b[22m\u001b[22m at \u001b[1m/Users/cedric/.julia/v0.6/GaussianProcesses/src/glue/ScikitLearn.jl:10\u001b[22m\u001b[22m\n",
      " [6] \u001b[1mscore\u001b[22m\u001b[22m at \u001b[1m/Users/cedric/.julia/v0.6/GaussianProcesses/src/glue/ScikitLearn.jl:24\u001b[22m\u001b[22m [inlined]\n",
      " [7] \u001b[1m_score\u001b[22m\u001b[22m\u001b[1m(\u001b[22m\u001b[22m::GaussianProcesses.GP, ::Array{Float64,2}, ::Array{Float64,1}, ::ScikitLearnBase.#score\u001b[1m)\u001b[22m\u001b[22m at \u001b[1m/Users/cedric/.julia/v0.6/ScikitLearn/src/cross_validation.jl:651\u001b[22m\u001b[22m\n",
      " [8] \u001b[1m#_fit_and_score#96\u001b[22m\u001b[22m\u001b[1m(\u001b[22m\u001b[22m::Bool, ::Bool, ::String, ::Function, ::GaussianProcesses.GP, ::Array{Float64,2}, ::Array{Float64,1}, ::Function, ::Array{Int64,1}, ::Array{Int64,1}, ::Int64, ::Dict{Symbol,Any}, ::Dict{Symbol,Any}\u001b[1m)\u001b[22m\u001b[22m at \u001b[1m/Users/cedric/.julia/v0.6/ScikitLearn/src/cross_validation.jl:574\u001b[22m\u001b[22m\n",
      " [9] \u001b[1m(::ScikitLearn.Skcore.#kw##_fit_and_score)\u001b[22m\u001b[22m\u001b[1m(\u001b[22m\u001b[22m::Array{Any,1}, ::ScikitLearn.Skcore.#_fit_and_score, ::GaussianProcesses.GP, ::Array{Float64,2}, ::Array{Float64,1}, ::Function, ::Array{Int64,1}, ::Array{Int64,1}, ::Int64, ::Dict{Symbol,Any}, ::Dict{Symbol,Any}\u001b[1m)\u001b[22m\u001b[22m at \u001b[1m./<missing>:0\u001b[22m\u001b[22m\n",
      " [10] \u001b[1m(::ScikitLearn.Skcore.##110#113{Dict{Any,Any},ScikitLearn.Skcore.GridSearchCV,Array{Float64,2},Array{Float64,1}})\u001b[22m\u001b[22m\u001b[1m(\u001b[22m\u001b[22m::Tuple{Array{Int64,1},Array{Int64,1}}\u001b[1m)\u001b[22m\u001b[22m at \u001b[1m./<missing>:0\u001b[22m\u001b[22m\n",
      " [11] \u001b[1mcollect\u001b[22m\u001b[22m\u001b[1m(\u001b[22m\u001b[22m::Base.Generator{Array{Tuple{Array{Int64,1},Array{Int64,1}},1},ScikitLearn.Skcore.##110#113{Dict{Any,Any},ScikitLearn.Skcore.GridSearchCV,Array{Float64,2},Array{Float64,1}}}\u001b[1m)\u001b[22m\u001b[22m at \u001b[1m./array.jl:441\u001b[22m\u001b[22m\n",
      " [12] \u001b[1mcopy!\u001b[22m\u001b[22m\u001b[1m(\u001b[22m\u001b[22m::Array{Any,1}, ::Base.Generator{ScikitLearn.Skcore.ParameterGrid,ScikitLearn.Skcore.##109#112{ScikitLearn.Skcore.GridSearchCV,Array{Float64,2},Array{Float64,1}}}\u001b[1m)\u001b[22m\u001b[22m at \u001b[1m./abstractarray.jl:572\u001b[22m\u001b[22m\n",
      " [13] \u001b[1m_fit!\u001b[22m\u001b[22m\u001b[1m(\u001b[22m\u001b[22m::ScikitLearn.Skcore.GridSearchCV, ::Array{Float64,2}, ::Array{Float64,1}, ::ScikitLearn.Skcore.ParameterGrid\u001b[1m)\u001b[22m\u001b[22m at \u001b[1m/Users/cedric/.julia/v0.6/ScikitLearn/src/grid_search.jl:274\u001b[22m\u001b[22m\n",
      " [14] \u001b[1mfit!\u001b[22m\u001b[22m\u001b[1m(\u001b[22m\u001b[22m::ScikitLearn.Skcore.GridSearchCV, ::Array{Float64,2}, ::Array{Float64,1}\u001b[1m)\u001b[22m\u001b[22m at \u001b[1m/Users/cedric/.julia/v0.6/ScikitLearn/src/grid_search.jl:558\u001b[22m\u001b[22m\n",
      " [15] \u001b[1minclude_string\u001b[22m\u001b[22m\u001b[1m(\u001b[22m\u001b[22m::String, ::String\u001b[1m)\u001b[22m\u001b[22m at \u001b[1m./loading.jl:515\u001b[22m\u001b[22m\n",
      " [16] \u001b[1minclude_string\u001b[22m\u001b[22m\u001b[1m(\u001b[22m\u001b[22m::Module, ::String, ::String\u001b[1m)\u001b[22m\u001b[22m at \u001b[1m/Users/cedric/.julia/v0.6/Compat/src/Compat.jl:478\u001b[22m\u001b[22m\n",
      " [17] \u001b[1mexecute_request\u001b[22m\u001b[22m\u001b[1m(\u001b[22m\u001b[22m::ZMQ.Socket, ::IJulia.Msg\u001b[1m)\u001b[22m\u001b[22m at \u001b[1m/Users/cedric/.julia/v0.6/IJulia/src/execute_request.jl:154\u001b[22m\u001b[22m\n",
      " [18] \u001b[1meventloop\u001b[22m\u001b[22m\u001b[1m(\u001b[22m\u001b[22m::ZMQ.Socket\u001b[1m)\u001b[22m\u001b[22m at \u001b[1m/Users/cedric/.julia/v0.6/IJulia/src/eventloop.jl:8\u001b[22m\u001b[22m\n",
      " [19] \u001b[1m(::IJulia.##14#17)\u001b[22m\u001b[22m\u001b[1m(\u001b[22m\u001b[22m\u001b[1m)\u001b[22m\u001b[22m at \u001b[1m./task.jl:335\u001b[22m\u001b[22m\n",
      "while loading In[3], in expression starting on line 1\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "(get_params(best_gp))[:logNoise] = 2.6\n",
      "(get_params(best_gp))[:k_lσ] = 4.8\n"
     ]
    }
   ],
   "source": [
    "gp_cv = fit!(GridSearchCV(GP(m=mZero,k=SE(0.0,0.0)), Dict(:logNoise=>collect(-10:0.3:10), :k_lσ=>collect(0:0.1:5))), x, y);\n",
    "best_gp = gp_cv.best_estimator_;\n",
    "@show get_params(best_gp)[:logNoise] get_params(best_gp)[:k_lσ]\n",
    "nothing"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "\u001b[1m\u001b[33mWARNING: \u001b[39m\u001b[22m\u001b[33mArray{T}(::Type{T}, m::Int) is deprecated, use Array{T}(m) instead.\u001b[39m\n",
      "Stacktrace:\n",
      " [1] \u001b[1mdepwarn\u001b[22m\u001b[22m\u001b[1m(\u001b[22m\u001b[22m::String, ::Symbol\u001b[1m)\u001b[22m\u001b[22m at \u001b[1m./deprecated.jl:70\u001b[22m\u001b[22m\n",
      " [2] \u001b[1mArray\u001b[22m\u001b[22m\u001b[1m(\u001b[22m\u001b[22m::Type{Float64}, ::Int64\u001b[1m)\u001b[22m\u001b[22m at \u001b[1m./deprecated.jl:57\u001b[22m\u001b[22m\n",
      " [3] \u001b[1m#predict#17\u001b[22m\u001b[22m\u001b[1m(\u001b[22m\u001b[22m::Bool, ::Function, ::GaussianProcesses.GP, ::Array{Float64,2}\u001b[1m)\u001b[22m\u001b[22m at \u001b[1m/Users/cedric/.julia/v0.6/GaussianProcesses/src/GP.jl:206\u001b[22m\u001b[22m\n",
      " [4] \u001b[1m(::GaussianProcesses.#kw##predict)\u001b[22m\u001b[22m\u001b[1m(\u001b[22m\u001b[22m::Array{Any,1}, ::GaussianProcesses.#predict, ::GaussianProcesses.GP, ::Array{Float64,2}\u001b[1m)\u001b[22m\u001b[22m at \u001b[1m./<missing>:0\u001b[22m\u001b[22m\n",
      " [5] \u001b[1m#predict#29\u001b[22m\u001b[22m\u001b[1m(\u001b[22m\u001b[22m::Bool, ::Function, ::GaussianProcesses.GP, ::Array{Float64,2}\u001b[1m)\u001b[22m\u001b[22m at \u001b[1m/Users/cedric/.julia/v0.6/GaussianProcesses/src/glue/ScikitLearn.jl:10\u001b[22m\u001b[22m\n",
      " [6] \u001b[1mpredict\u001b[22m\u001b[22m\u001b[1m(\u001b[22m\u001b[22m::GaussianProcesses.GP, ::Array{Float64,2}\u001b[1m)\u001b[22m\u001b[22m at \u001b[1m/Users/cedric/.julia/v0.6/GaussianProcesses/src/glue/ScikitLearn.jl:10\u001b[22m\u001b[22m\n",
      " [7] \u001b[1minclude_string\u001b[22m\u001b[22m\u001b[1m(\u001b[22m\u001b[22m::String, ::String\u001b[1m)\u001b[22m\u001b[22m at \u001b[1m./loading.jl:515\u001b[22m\u001b[22m\n",
      " [8] \u001b[1minclude_string\u001b[22m\u001b[22m\u001b[1m(\u001b[22m\u001b[22m::Module, ::String, ::String\u001b[1m)\u001b[22m\u001b[22m at \u001b[1m/Users/cedric/.julia/v0.6/Compat/src/Compat.jl:478\u001b[22m\u001b[22m\n",
      " [9] \u001b[1mexecute_request\u001b[22m\u001b[22m\u001b[1m(\u001b[22m\u001b[22m::ZMQ.Socket, ::IJulia.Msg\u001b[1m)\u001b[22m\u001b[22m at \u001b[1m/Users/cedric/.julia/v0.6/IJulia/src/execute_request.jl:154\u001b[22m\u001b[22m\n",
      " [10] \u001b[1meventloop\u001b[22m\u001b[22m\u001b[1m(\u001b[22m\u001b[22m::ZMQ.Socket\u001b[1m)\u001b[22m\u001b[22m at \u001b[1m/Users/cedric/.julia/v0.6/IJulia/src/eventloop.jl:8\u001b[22m\u001b[22m\n",
      " [11] \u001b[1m(::IJulia.##14#17)\u001b[22m\u001b[22m\u001b[1m(\u001b[22m\u001b[22m\u001b[1m)\u001b[22m\u001b[22m at \u001b[1m./task.jl:335\u001b[22m\u001b[22m\n",
      "while loading In[4], in expression starting on line 2\n",
      "\u001b[1m\u001b[33mWARNING: \u001b[39m\u001b[22m\u001b[33mArray{T}(::Type{T}, m::Int) is deprecated, use Array{T}(m) instead.\u001b[39m\n",
      "Stacktrace:\n"
     ]
    },
    {
     "data": {
      "image/png": "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",
      "text/plain": [
       "PyPlot.Figure(PyObject <matplotlib.figure.Figure object at 0x11a366b50>)"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      " [1] \u001b[1mdepwarn\u001b[22m\u001b[22m\u001b[1m(\u001b[22m\u001b[22m::String, ::Symbol\u001b[1m)\u001b[22m\u001b[22m at \u001b[1m./deprecated.jl:70\u001b[22m\u001b[22m\n",
      " [2] \u001b[1mArray\u001b[22m\u001b[22m\u001b[1m(\u001b[22m\u001b[22m::Type{Float64}, ::Int64\u001b[1m)\u001b[22m\u001b[22m at \u001b[1m./deprecated.jl:57\u001b[22m\u001b[22m\n",
      " [3] \u001b[1m#predict#17\u001b[22m\u001b[22m\u001b[1m(\u001b[22m\u001b[22m::Bool, ::Function, ::GaussianProcesses.GP, ::Array{Float64,2}\u001b[1m)\u001b[22m\u001b[22m at \u001b[1m/Users/cedric/.julia/v0.6/GaussianProcesses/src/GP.jl:206\u001b[22m\u001b[22m\n",
      " [4] \u001b[1m(::GaussianProcesses.#kw##predict)\u001b[22m\u001b[22m\u001b[1m(\u001b[22m\u001b[22m::Array{Any,1}, ::GaussianProcesses.#predict, ::GaussianProcesses.GP, ::Array{Float64,2}\u001b[1m)\u001b[22m\u001b[22m at \u001b[1m./<missing>:0\u001b[22m\u001b[22m\n",
      " [5] \u001b[1m#predict#29\u001b[22m\u001b[22m\u001b[1m(\u001b[22m\u001b[22m::Bool, ::Function, ::GaussianProcesses.GP, ::Array{Float64,2}\u001b[1m)\u001b[22m\u001b[22m at \u001b[1m/Users/cedric/.julia/v0.6/GaussianProcesses/src/glue/ScikitLearn.jl:10\u001b[22m\u001b[22m\n",
      " [6] \u001b[1mpredict\u001b[22m\u001b[22m\u001b[1m(\u001b[22m\u001b[22m::GaussianProcesses.GP, ::Array{Float64,2}\u001b[1m)\u001b[22m\u001b[22m at \u001b[1m/Users/cedric/.julia/v0.6/GaussianProcesses/src/glue/ScikitLearn.jl:10\u001b[22m\u001b[22m\n",
      " [7] \u001b[1minclude_string\u001b[22m\u001b[22m\u001b[1m(\u001b[22m\u001b[22m::String, ::String\u001b[1m)\u001b[22m\u001b[22m at \u001b[1m./loading.jl:515\u001b[22m\u001b[22m\n",
      " [8] \u001b[1minclude_string\u001b[22m\u001b[22m\u001b[1m(\u001b[22m\u001b[22m::Module, ::String, ::String\u001b[1m)\u001b[22m\u001b[22m at \u001b[1m/Users/cedric/.julia/v0.6/Compat/src/Compat.jl:478\u001b[22m\u001b[22m\n",
      " [9] \u001b[1mexecute_request\u001b[22m\u001b[22m\u001b[1m(\u001b[22m\u001b[22m::ZMQ.Socket, ::IJulia.Msg\u001b[1m)\u001b[22m\u001b[22m at \u001b[1m/Users/cedric/.julia/v0.6/IJulia/src/execute_request.jl:154\u001b[22m\u001b[22m\n",
      " [10] \u001b[1meventloop\u001b[22m\u001b[22m\u001b[1m(\u001b[22m\u001b[22m::ZMQ.Socket\u001b[1m)\u001b[22m\u001b[22m at \u001b[1m/Users/cedric/.julia/v0.6/IJulia/src/eventloop.jl:8\u001b[22m\u001b[22m\n",
      " [11] \u001b[1m(::IJulia.##14#17)\u001b[22m\u001b[22m\u001b[1m(\u001b[22m\u001b[22m\u001b[1m)\u001b[22m\u001b[22m at \u001b[1m./task.jl:335\u001b[22m\u001b[22m\n",
      "while loading In[4], in expression starting on line 3\n"
     ]
    }
   ],
   "source": [
    "xx = -5:0.1:10\n",
    "plot(xx, predict(gp, reshape(collect(xx), length(xx), 1)), label=\"hand-specified\")\n",
    "plot(xx, predict(best_gp, reshape(collect(xx), length(xx), 1)), label=\"gridsearch-optimized\")\n",
    "plot(x, y, \"bo\")\n",
    "legend();"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "`GridSearchCV` can tune all kernel and mean parameters:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "Dict{Symbol,Float64} with 4 entries:\n",
       "  :k_lσ     => 0.0\n",
       "  :m_β      => 0.0\n",
       "  :logNoise => -1.0\n",
       "  :k_ll     => 0.0"
      ]
     },
     "execution_count": 5,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "get_params(gp)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# Example 2 - cross-validation"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {},
   "outputs": [],
   "source": [
    "using ScikitLearn, PyPlot\n",
    "using ScikitLearn.CrossValidation: cross_val_score"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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QkZGBg8++CAAQ4cOZc+ePTz99NPs3r2bTz75hFmzZuU7zjPPPMPPP//MiBEjiI+PZ8+ePXz55ZcaHF6OFJxERERKia+vL76+vgV+9vrrr9O3b1/uv/9+IiMj2bt3L9999x1Vq1YF8m61LVmyhKVLl9K0aVOmT5/Oa6+9lu8YTZo0Yc2aNfz555906NCB5s2b8+KLL1KzZs0yvzbJY9hKMu/yCpKWloafnx+pqamF/o9BRERKLjMzk8TERMLDwzUrTIrlYr87ZfX9rR4nEREREQcpOImIiIg4SMFJRERExEEKTiIiIiIOUnASERERcZCCk4iIiIiDFJxEREREHKTgJCIiIuIgBScRERERByk4iYiIVBJnzpyhV69e+Pj4YBgGmZmZTqslNjbW6TWUBQUnERGREjAM46Kvl156qdxrmjFjBlu2bGHjxo0kJSWV2yNs2rRpw9ixY/Nt69y5c7nWUF5cnF2AiIhIRZSUlGT/74ULF/Liiy+ye/du+zZvb+8L9rHZbFgsFlxcyubrNyEhgeuuu46IiIgyOX5xuLm5ERwc7OwySp16nEREREogODjY/vLz88MwjHzbvL297bervv/+e5o1a4abmxubN2+mX79+9OvXL9/xhg4dSrdu3ezvLRYLL7/8MmFhYXh5edG8eXO+/PLLQutp06YN7733Ht9//z2GYdCtWzcyMzMxDIPY2Nh8bT08PFiwYAEAu3btwjAMvvrqKzp06GA/1+bNm/Pts2bNGvvnAQEBdO/enfT0dPr168fGjRuZOHGivbctOTm5wFt1CxYsoGHDhri5uREeHs677757wc/0rbfe4oEHHsDb25uwsDBmzZpVrP+/lDUFJxERufzYbJB91jkvm63ULycmJobJkyezc+dOrr32Wof2eemll/jss8+YMWMG27dv59FHH+Wuu+5iw4YNBbZfvnw5DzzwAJ06dSIpKYlPP/20WDU+99xzPP/888THx1O7dm369++P1WoFYOPGjXTt2pXIyEg2btzI2rVrueWWW7BYLHzwwQdERkYyYsQIkpKSSEpKIjAw8ILj//zzz9x7770MGDCA7du389xzzzFmzBh7gDtv4sSJdOjQgfj4eAYPHsyQIUNITEws1rWUJd2qExGRy09OBrxW0znnfvYIuFUp1UO+9tprdOrUyeH26enpvPXWW/z88880b94cgKuvvpo1a9bw3//+lzZt2lywT0BAAJ6envlukRVnYPbYsWOJjo4GYNy4cbRo0YIDBw4QFhbGxIkTueGGG3jnnXfs7f95O9DV1ZUqVapc9NbcpEmT6NGjh30sVP369dm2bRtvvvlmvt633r17M2TIEACef/553n77bdasWUN4eLjD11KW1OMkIiJSxlq2bFms9rt37yYzM5MOHTrg7e1tfy1atIiEhIQyqbFJkyb2/w4JCQHg6NGjAMTHx3PTTTdd0vF37txJu3bt8m1r164du3btKrQOk8lEUFCQvY7LgXqcRETk8uPqldfz46xzl7IqVfL3YJlMJiwWS75tOTk59v9OT08HYOXKlVSvXj1fu+LMUjOZ8vpHbP+4/Wi1Wi84N+T1Gp1nGIa9LYCnp6fD57xU/6zjfC3n67gcVKgepx9//JGePXtSs2ZNDMNg6dKlF20fFxdX4BTR5OTkcqpYRERKxDDybpc54/V3aChLNWrUyDcrD/J6dc5r3LgxLi4uHDx4kHr16uV7XXXVVQ6fx83NDV9f33zn+uOPP8jNzS1WvU2aNGHVqlUXPU9BYeyfGjZsyLp16/JtW7duHQ0bNixWLc5WoXqczp49S9OmTRk8eDB9+vRxeL/du3fj6+trf1/QoDUREZHy0rlzZ6ZOncqCBQuIjIxk5syZ7N27lxo1agB545Uef/xxRowYQVZWFlFRUZw+fZq1a9dSo0YN+vfvX6xzvfPOO7Ro0YLMzEzGjh1r74ly1HPPPUfz5s0ZNWoUDz30EGazmZUrV/LAAw/g5+dHWFgY69ev58CBA3h5eVGtWrULjvHUU0/Rvn17Jk6cSJ8+fezjtS63WXNFqVA9Tt27d+fVV1/l9ttvL9Z+gYGB+aaIFvcXRkREpDTddtttjBkzhscff5w2bdpgtVovWJ7gjTfeYMyYMbzyyis0bNiQW265he+++46wsLBineudd96hRo0atG3bloEDB/Lcc89dcDusKI0aNSI2NpYNGzbQsmVL2rVrR2xsLGazGcgbWJ6dnc21115LjRo1SElJueAYUVFRzJ8/n1mzZnHdddfxf//3f7zxxhsXXPflzrDZymDeZTkwDIMvvviC3r17F9omLi6OTp06UadOHbKysmjUqBEvvfTSBYPT/ikrK4usrCz7+7S0NEJDQ0lNTc3XayUiIqUjMzOTxMREwsPDK90q01K2Lva7k5aWhp+fX6l/f1fqrpeQkBCmT5/OkiVLWLJkCaGhodx4441s3bq10H0mTJiAn5+f/RUaGlqOFYuIiMjlrEKNcSquBg0a0KBBA/v7tm3bkpCQwOTJk5k7d26B+8TExDB69Gj7+/M9TiIiIiKVOjgVpFWrVqxdu7bQz93d3XF3dy/HikRERKSiqNS36goSHx9vX9hLREREpDgqVI9Teno6e/futb9PTEwkPj6egIAAateuTUxMDIcPH2bOnDkATJkyhfDwcK677joyMzOZMWMGq1ev5vvvv3fWJYiIiEgFVqGC0+bNm/M96+f8WKQBAwYwa9YskpKSOHDggP3z7OxsnnzySQ4fPoyXlxdNmjRh5cqVxXpekIiIiMh5FXY5gvJSVtMZRUQkj5YjkJLScgQiIiIilzEFJxEREREHKTiJiIhUUoZhsHTpUmeXUakoOImIiFyCY8eOMWzYMGrXro27uzvBwcFER0ezbt06Z5cmZaBCzaoTERG5GIvVxqbEkxw9k0mgjwetwgMwm4wyPWffvn3Jzs5m9uzZXH311aSkpLBq1SpOnDhRpucV51CPk4iIVAqx25NoP3E193y4gccXxHPPhxtoP3E1sduTyuycp0+f5qeffmLixIn2h8q3atWKmJgYbrvtNgDefvttGjduTJUqVQgNDeXRRx8lPT3dfoxZs2bh7+/PN998Q4MGDfDy8uKOO+4gIyOD2bNnExYWRtWqVRk5ciQWi8W+X1hYGK+88gr33HMPVapUoVatWrz33nsXrffgwYPcdddd+Pv7ExAQQK9evdi3b5/987i4OFq1akWVKlXw9/enXbt27N+/v3R/aBWcgpOIiFR4sduTGDZvK0mpmfm2J6dmMmze1jILT97e3nh7e7N06VKysrIKbGMymXj33Xf5448/mD17NqtXr2bMmDH52mRkZPDuu++yYMECYmNjiYuL4/bbb2f58uUsX76cuXPn8sEHH7B48eJ8+7355ps0bdqUX3/9lbFjx/L444+zYsWKAuvIyckhOjoaHx8ffvrpJ9atW4e3tzfdunUjOzub3NxcevfuTceOHdm2bRvr16/n4YcfxjDKtseuotE6TkXQOk4iImXrUtdxslhttJ+4+oLQdJ4BBPt5sPaZzmVy227JkiUMGTKEc+fOERkZSceOHenXrx9NmjQpsP3ixYsZOnQox48fB/J6nAYNGsTevXupW7cuAEOHDmXu3LmkpKTg7e0NQLdu3QgLC2P69OlAXo9Tw4YN+fbbb+3H7tevH2lpaSxfvjzv2g2DL774gt69ezNv3jxeffVVdu7caQ9D2dnZ+Pv7s3TpUlq2bEm1atWIi4ujY8eOpf5zKgtax0lERKSYNiWeLDQ0AdiApNRMNiWeLJPz9+3blyNHjvDVV1/RrVs34uLiiIyMZNasWQCsXLmSm266iVq1auHj48P999/PiRMnyMjIsB/Dy8vLHpoAgoKCCAsLs4em89uOHj2a79xRUVEXvN+5c2eBdf7222/s3bsXHx8fe09ZQEAAmZmZJCQkEBAQwMCBA4mOjqZnz5688847JCWV3W3OikrBSUREKrSjZwoPTSVpVxIeHh507dqVF154gZ9//pmBAwcybtw49u3bx6233kqTJk1YsmQJW7ZssY9Dys7Otu/v6uqa73iGYRS4zWq1lrjG9PR0WrRoQXx8fL7Xn3/+Sf/+/QGYOXMm69evp23btixcuJD69euzYcOGEp+zMlJwEhGRCi3Qx7Hbe462Kw0RERGcPXuWLVu2YLVamTRpEm3atKF+/focOXKk1M7z71CzYcMGGjZsWGDbyMhI9uzZQ2BgIPXq1cv38vPzs7dr3rw5MTEx/PzzzzRq1IhPPvmk1OqtDBScRESkQmsVHkCInweFjV4ygBC/vKUJStuJEyfo3Lkz8+bNY9u2bSQmJvLZZ5/xxhtv0KtXL+rVq0dOTg7/+c9/+Ouvv5g7d659jFJpWLduHW+88QZ//vkn7733Hp999hmPP/54gW3vvfdeqlevTq9evfjpp59ITEwkLi6OkSNHcujQIRITE4mJiWH9+vXs37+f77//nj179hQaxK5UWsdJREQqNLPJYFzPCIbN24pB3pim886HqXE9I8pkYLi3tzetW7dm8uTJJCQkkJOTQ2hoKEOGDOHZZ5/F09OTt99+m4kTJxITE8MNN9zAhAkTeOCBB0rl/E8++SSbN29m/Pjx+Pr68vbbbxMdHV1gWy8vL3788UeeeeYZ+vTpw5kzZ6hVqxY33XQTvr6+nDt3jl27djF79mxOnDhBSEgIw4cP55FHHimVWisLzaorgmbViYiUrUudVXde7PYkxn+9I99A8RA/D8b1jKBbo5DSKPWyEhYWxqhRoxg1apSzS3EaZ8yqU4+TiIhUCt0ahdA1IrjcVw6XK4uCk4iIVBpmk0FU3WrOLkMqMQUnERGRCuifj0qR8qNZdSIiIiIOUnASEZHLguYqSXE543dGwUlERJzq/ArZ/3wEiYgjzv/O/HuV9bKkMU4iIuJUZrMZf39/+3PYvLy87A+hFSmIzWYjIyODo0eP4u/vj9lsLrdzKziJiIjTBQcHA1zwEFuRi/H397f/7pQXBScREXE6wzAICQkhMDCQnJwcZ5cjFYCrq2u59jSdp+AkIiKXDbPZ7JQvQxFHaXC4iIiIiIMUnEREREQcpOAkIiIi4iAFJxEREREHKTiJiIiIOEjBSURERMRBCk4iIiIiDlJwEhEREXGQgpOIiIiIgxScRERERByk4CQiIiLioAoVnH788Ud69uxJzZo1MQyDpUuXFrlPXFwckZGRuLu7U69ePWbNmlWmNVqsNtYnnODL+MOsTziBxWor0/OJiIhI+alQD/k9e/YsTZs2ZfDgwfTp06fI9omJifTo0YOhQ4cyf/58Vq1axUMPPURISAjR0dGlXl/s9iTGf72DpNRM+7YQPw/G9YygW6OQUj+fiIiIlC/DZrNVyC4RwzD44osv6N27d6FtnnnmGZYtW8b27dvt2/r168fp06eJjY116DxpaWn4+fmRmpqKr69voe1itycxbN5W/v3DNP7+v9Pui1R4EhERKSeOfn8XV4XqcSqu9evX06VLl3zboqOjGTVqVPEP9tNk8PUGsxuYXMHVEzz8wMMPi7sfH321Ax/cSMOL/8UlsP39bvzXO+gaEYzZZBR2BjuL1camxJMcPZNJoI8HrcIDHNpPREREylalDk7JyckEBQXl2xYUFERaWhrnzp3D09Pzgn2ysrLIysqyv09LS8v7j7WTwL3g8GIGPgPwgAybOyk2f1IIINlWlSO26iTagtmXFsyvO2rR8roGYBQegnS7T0RE5PJVqYNTSUyYMIHx48dfsH1n0G14uoItNxurJRsXSyZe1nQ8rem4ZKdRxZpOFSMLLyOLcCOFcFIuPPjil+ErH6h+DQQ3/t8r6Dpw9yn0dl9yaibD5m3V7T4REREnq9TBKTg4mJSU/AEmJSUFX1/fAnubAGJiYhg9erT9fVpaGqGhody5vxcmd6+Lns+DLIKMUwRximDjFEHGSa4yjhFuJBNuJFPLOI4p+wwc2Zr3+gdbtXrkngrlbnNdtljrs9dWE9vfkx5LcrtPRERESl+lDk5RUVEsX74837YVK1YQFRVV6D7u7u64u7tfsL13s5oEVPXHx8MFb3cXXM0mrDYb76zaw5nMXAAycWe/LZj9BHNBtxHgRg6hxlHqG4eIMO0nwthPhGk/IcZJjBN7uZW93Or6AwCpNi82WxuwztqItdZG/Gm7iqTUTDYlniSqbrVL+KmIiIhISVWo4JSens7evXvt7xMTE4mPjycgIIDatWsTExPD4cOHmTNnDgBDhw5l6tSpjBkzhsGDB7N69WoWLVrEsmXLin3uV29vfMGo/PUJJ+yhqShT7m5Ko1p+HD6dyb7jZ9lz9Aw/paSzJ+UMRsYJmpgSaGHaQ0vjT5qaEvAzMrjJ/Cs3mX8F4KjNn7XWRrj9cQBC7gavgGJfg4iIiFyaChWcNm/eTKdOnezvz99SGzBgALNmzSIpKYkDBw7YPw8PD2fZsmU88cQTvPPOO1x11VXMmDGj1NZwOnoms+hGwIPtwujd/CoA6gX60LF+DftnNpuN4+nZLN5ykImxuwFwIZeGxgHamHbQ3rSdVqZdBBqn6WNeC1vXYvv1OYzaUdCgO1x7CwRcXSrXIyIiIhdXYddxKi8XWwdifcIJ7vlwQ5HH+HRImyJvr1msNtpPXE1yauYFd/ncySbStIf2pt/pbIqnoelAvs9tgREYjfpAo74KUSIiIpTdOk4KTkW42A/+YmEH8gZ0B/t5sPaZzg4N6D4/qw4KHCJF72Y1OXTqHCkHdnOTaStdTVtobdqJi2H9X6OakXkBqlEf8K3p+IU6SGtMiYhIRaDg5CRF/eALCzslXTHckXWcjp3JYtXOFL7fkcK2vfvoZNtET9N62pm2YzbyqrAZJk6HdGBvrV5YrunO9fVCLjngaI0pERGpKBScnMSRH3xpB4ri9OqkZ+WyYkcyS389wo49e4k2beI288+0Mu22tzlp82aFS0dqdX6Y9u1uLHY9oEfKiIhIxaLg5CSO/uAvh1tYx85k8eZ3u1i0+RB1jGTuNK/hDvOPBBun7G1OVm9JwI2PQsPbwOzq0HHP35L8ZzD8p+LekhQRESlrCk5OUlY/+LJQUMAxYeUG0zbuMsfR1bQFV8OS94F3MLQYmPfyvXhPUWkOghcRESkPesivFGlT4skLeoWsmIizNiPO2oxATtHfZRX9zasJTE+GNa9j+2kSRuM7oe1jEBRR4HEdXXbB0XYiIiIVlcnZBUjpKSq4HKUqU3LvoEP2uzyWPYJfrPUxrDnw2ycwLQrm3QGJP8K/OiEDfTwcOr+j7URERCoqBadKxNHgMqnf9dTqcD8Pmf+P3lkvs8zSCgsm2LsCZveEDzvBruX2ANUqPIAQPw8KG71kkDcYvlW4VjMXEZHKTcGpEnE04HRvHMLY7teyPqYzt97Sk5c9n6FT1iTm5HYlEzc48issuAemd4AdX2LGxrieEfZj/JsNeKFHhAaGi4hIpafB4UWoSIPDoWTrSmXlWliy5TDT1ySQfjKZB12WM9Dle6rw962/Gg2h49PE2tow/ptdBc6u03pOIiJyOdGsOiepaMEJSr6uVK7FytfbjvDuqr2cPJ7CYJdvedDlO7zJyGsQ1Jhfrn6UO3/w5d99T1rPSURELicKTk5SEYMTXNq6UrkWK59vPcw7q/Zw5vRxBpq/42HX5fYA9Yu1Pm/k9OMX27X59tN6TiIicrlQcHKSihqcSkNWroVFvxzkP6v3kn3mOENdvmGgORYPIweAHyxNmZDbnz9tofn203pOIiLibGX1/a3B4VIodxcz90eFsebpTgyJbslk7uWGrCnMy72JHJuZTubf+NZtLK+5fEgNTtv303pOIiJSWSk4SZE83cwM71SPd/o15yhVeT73Qbpkv8kySyvMho3+Lj/wg/toRpi/wIMsreckIiKVloKTOKxrRBAhfnmhaL8tmOE5o7gj60XirXXxNjJ5yvUz1ng8ReuzP1ywiKaIiEhloOAkDjObDMb1jMDgf7PoNtuu5fbs8YzMHsEhW3WCOIHp8wdh1q2QvN2Z5YqIiJQ6BScplm6NQph2XyTBfv+7HWfDxNfWttyU9RZv59xBjuEG+9fCBx1g+dNw7pQTKxYRESk9mlVXhCt5Vt3F/Hu5g7o1qjB55R4W/HKAmrZjvOTxCV3ZmNfYqxrc/H/QtB8YWqZARETKnpYjcBIFp+L59cApnvtiOzuS0mhn+p3XPecRajmY92FYB7h1MlS/xrlFiohIpafg5CQKTsWXa7Eye/1+3v5+N9nZWTzssoxRrktxtWWB2Q3aPwHtR4OrZt+JiEjZUHByEgWnkktOzWT813/w7fZkQo0U3vSaRxvLlrwPA+rCbe9CWHvnFikiIpWSgpOTKDg55mKPePnuj2ReWLqdo2cyucW0kde95uObeyJvx5aDoct48NDPVkRESo+Ck5MoOBXNkYcKp57L4fVvd/LppoP4kMHLXgu53boir7FvrbyxT/WjnVG+iIhUQgpOTqLgdHGx25MYNm8r//4lOj93btp9kfbwBPBzwnGe/fx39p3IIMr0B//xnkX17MMAHAu7jYA7pmD21nPuRETk0uhZdXLZsVhtjP96xwWhCbBvG//1DizW/7VoW7c63z5+A4PbhbPBeh3t017lv7k9sNjRwpA4AAAgAElEQVQMauz7ilNvRbLl+/nlUr+IiEhxKThJiW1KPJnv9ty/2YCk1Ew2JZ7Mt93TzUyr8KrYgEzceS33Xvpkj2ePtRbVOU2Lnx/l0MyBkJlapvWLiIgUl4KTlNjRM4WHpou1O99T9U+/2epxa/b/8UFuD6w2g6v2f4Ht/SjYu6rU6hUREblUCk5SYoE+jq3D9O92hfVUZeHGhNx7uSv7BfZZgzDSDsO8PnmPbck5Vyo1i4iIXAoFJymxVuEBhPh5UNhDVAzyZte1Cg/It72onqrNtmvpnj2BJS7d8zZs+i980BGSfrvofharjfUJJ/gy/jDrE07kG1slIiJSGlycXYBUXGaTwbieEQybtxUD8g0SPx+mxvWMsK/ndJ4jPVXn8ODJ9Pv51rUp//Gagefx3fDhTdD5OWg7EkzmfO0dWRJBRETkUqnHSS5Jt0YhTLsvkmC//GEo2M/jgqUIznOkpyrQx5129aqxMqcJbVNf5dcq7cGaAytfgtk9IfWQvf35JRH+ffsvOTWTYfO2Ers96RKvUkREJI/WcSqC1nFyzMVWDi/I+bADBfdUTbsvkpsjgvlobSJvfLeLHIuVB6v8zLPGLMy5Z8HDH3pNxdLgVtpPXF3o7D6DvBC39pnOF61HREQqFy2A6SQKTmXH0dtrvx9KZeSCX0k8fpY6RgoLAj4k5GzerLzk+vfScVtXsnC76Lk+HdKGqLpaWFNE5Eqh4OQkCk5ly9GeqrNZuYz/+g8WbT6EK7m8GfAVvTMWA7DbehWP5TzGn7bQQs/zTr9m9GpWq8yuQ0RELi9aOVwqJbPJIKpuNXo1q0VU3WqF3k6r4u7CG3c0ZWr/5ni4ezDqZB+GGc9z1rUaDUyH+Mrtee42/wAFrmMO+45nlOFViIjIlaLCBaf33nuPsLAwPDw8aN26NZs2bSq0bVxcHIZhXPBKTk4ux4qlNN3apCbfjGxP41p+fHsughvOvMpPtmZ4GDlMdP2Qya7v48WF452mrPxTg8RFROSSVajgtHDhQkaPHs24cePYunUrTZs2JTo6mqNHj150v927d5OUlGR/BQYGllPFUhbqVKvC4mFRDG4Xzgn8eCDrKV7P6UeuzcTt5nV87fYc1xoHLtjv38/NExERKa4KFZzefvtthgwZwqBBg4iIiGD69Ol4eXnx8ccfX3S/wMBAgoOD7S+TqUJdthTA3cXMiz0j+PCBlvh6ujPdcht3Z7/AEVsAdU1JLHV7Id+tu8KemyciIlIcFSZBZGdns2XLFrp06WLfZjKZ6NKlC+vXr7/ovs2aNSMkJISuXbuybt26i7bNysoiLS0t30suX10jglg2sj11ArzYYmtAj6zXWG353627Sa7T8SDL3t7R5+uJiIgUpMIEp+PHj2OxWAgKCsq3PSgoqNAxSyEhIUyfPp0lS5awZMkSQkNDufHGG9m6dWuh55kwYQJ+fn72V2ho4TO15PJwVVUvXu3dCIBT+PJgzv9u3fU1/8QXbi8SbuSNb3L0+XoiIiIFqdSPXGnQoAENGjSwv2/bti0JCQlMnjyZuXPnFrhPTEwMo0ePtr9PS0tTeLpM/XMpg+pV3An29SA5LRMbJqZbbuNX6zVMdXuXhqaDfOX2PP/n+hitwm8pcH9HFu0UERGpMMGpevXqmM1mUlJS8m1PSUkhODjY4eO0atWKtWvXFvq5u7s77u7uJa5TykdBi2f6e7nma7PR1pBbsl5jqtt/aG3axeu5b8CKDOjyErE7j+vZdiIiUmwV5ladm5sbLVq0YNWqVfZtVquVVatWERUV5fBx4uPjCQnRF2NFVtiz6VIzcoD8AeoYVemf/RxfePXN27B+KiendeeFeT/o2XYiIlJsFabHCWD06NEMGDCAli1b0qpVK6ZMmcLZs2cZNGgQkHeb7fDhw8yZMweAKVOmEB4eznXXXUdmZiYzZsxg9erVfP/99868DLkEFquN8V/vKHCZSxt5z6bzcDEx/6HWHDuTybZDqczdsJ8nTvblV/9rGGeZSsDxX/jKPYFHsx/nV9s1F+w//usddI0I1m07ERG5QIUKTnfffTfHjh3jxRdfJDk5mWbNmhEbG2sfMJ6UlMSBA/9bvyc7O5snn3ySw4cP4+XlRZMmTVi5ciWdOnVy1iXIJdqUeLLQB/pCXvhJTsvCZBj0bn4VvZtfRc+mNXl0/lbmnG7CLy7j+Y9pEvVMR1jo9jIv5Q7kE0tnzj9e+J/LFujZdiIi8m96Vl0R9Ky6y8uX8Yd5fEF8ke3+/Wy6E+lZPPbpr/yccIIqnOMt1+l0N/8CwMLcG3kxd2C+BwXr2XYiIhWbnlUnguPLCfy7XTVvd+YMbsWtTUI4iyfDckbxek4/LDaDu13iWOD2KoGcKvZ5RETkyqLgJBVKq/AAQvw8KGz0kUHe7LhW4QEXfOZiNvFOv+b4e7oCBtMttzEgZyynbVVobtrLN+7PEWn8Wej+IiIiCk5SoZhNBuN6RgBcEJ7Ovx/XM6LQgd1mk8HrfRvb36+1Nua27FfZZQ0l0DjNp26v8t9GOzQwXERECqTgJBVOt0YhTLsvkmC//LfTgv08mHZfZJHrMHVrFML0+yIJ8slbr+uALYg+2eNZYWuFu5FL4y3Pw7InwZJTZtcgIiIVkwaHF0GDwy9fl7ryt8VqY0PCCT5el8iqXUcBG5OCV9Dn9GwMbBDWAe6cDVU0u05EpKIpq+9vBaciKDhdGb6MP8yYxdvIyrVyr/8fvGKZginnLPjXgXsWQFCEs0sUEZFi0Kw6kTLUq1ktlgxrS00/D+afvo4+2S9zrkoonN4PH3WFXcucXaKIiFwGFJxE/taolh9fPdaeVuEBxGeF0Pbk8xz2bwnZ6bCgP/z4JqiDVkTkiqbgJPIP1b3dmfdga/q3rs0pmw8dk0fyU9Xb8z5c/SoseQhyzjm3SBERcRoFJ5F/cXMx8X+9G/FKr+uwmVy5P+lO3vcegc3kAtsXw6xb4UyKs8sUEREnUHASKYBhGNwfFcbcwa3w93LljeNtGW56nlw3Pzi8GT7sDEnbnF2miIiUMwUnkYtoW686Xw5vxzWB3ixPr88tGS+R7h0GaYfg42jY+Y2zSxQRkXKk4CRShDrVqvD5o23p1KAGf+YG0fb4s+z3awU5GbDwPlg7RYPGRUSuEApOIg7w8XBlxoDrefiGq0nDm5tSRrDGrxdgg5Xj4KsRkJvt7DJFRKSMKTiJOMhsMnj2loa8eUcTDLMrA1LuZrrXI9gME/w6D+b1gYyTzi5TRETKkIKTSDHd2TKUT4e0oVoVN14/2ZEnTGOxuFaBfT/BjC5wIsHZJYqISBlRcBIpgZZhASwd3o4GQT4sPduI3ufGkeFZE04m5M2427fW2SWKiEgZUHASKaHQAC8WD4ui87WB/J57FR1PPU+yz3WQeRrm9IbfFji7RBERKWUKTiKXwMfDlQ8faMmD7cM5hj83HnuKeJ8bwJoDXzwCP7ymGXciIpWIgpPIJTKbDF64NYIJfRqTa/Lg9mMP87nXnXkfrpkInz8MuVnOLVJEREqFgpNIKbmnVW3mDG6Fr6c7o0/ezuuuj2IzzPD7orxbd5pxJyJS4Sk4iZSitvWq88WjbQmr5sX0M+0ZYo0h19UbDvysGXciIpWAgpNIKbu6hjdfPNqO1uEBrMyKoMfZF0n3+HvG3YwucGCjs0sUEZESUnASKQNVq7gx98HW3NHiKnZbr6LT6ec57HUtnDsJs3vCH184u0QRESkBBSeRMuLmYuLNO5rwTLdrOYY/XU6OYatnFFiy4LOBsHayZtyJiFQwCk4iZcgwDIbdWJdp90Zic/XijlPDWerWM+/DlS/BN0+AJdepNYqIiOMUnETKQffGISx8OIpqPp6MSruHt0yDsGHAlpmw4B7ISnd2iSIi4gAFJ5Fy0jTUn6XD23FtsA9TM7oy3DIai9kD9nwPM7tDWpKzSxQRkSIoOImUo1r+niwe1pZODWqwPKcFfTOe5ZxrVUjeljfj7uhOZ5coIiIXoeAkUs683V348IGWDGwbRrytHjenv8hRt9qQdgg+ioa/1ji7RBERKYSCk4gTuJhNvHTbdbzUM4LDBNE17Xl2ujWCrFSY1xd+W+jsEkVEpAAKTiJONLBdODMGtCTXzY/eaU+x2qX93w8Ifhh+fFPLFYiIXGYUnEScrPO1QXw2tC0Bfr48mD6UWUavvA9WvwpfjwRLjnMLFBEROwUnkctARE1fvhzejka1qvLSubsZbxmEDRNsnQOf9oOsM84uUUREUHASuWwE+nqw8JE23BwRxMycrgzJfoIckzvsXQkzb4Ezyc4uUUTkilfhgtN7771HWFgYHh4etG7dmk2bNl20fVxcHJGRkbi7u1OvXj1mzZpVPoWKlICXmwvT72vBwzdczUprC+449xxnzP7/WK5gl7NLFBG5ohU7OA0YMIAff/yxLGop0sKFCxk9ejTjxo1j69atNG3alOjoaI4ePVpg+8TERHr06EGnTp2Ij49n1KhRPPTQQ3z33XflXLmI40wmg2dvachrtzdmu3ENt2SM44i5FqQehI9uhsSfnF2iiMgVy7DZijdtp3fv3ixfvpw6deowaNAgBgwYQK1atcqqvnxat27N9ddfz9SpUwGwWq2Ehoby2GOPMXbs2AvaP/PMMyxbtozt27fbt/Xr14/Tp08TGxvr0DnT0tLw8/MjNTUVX1/f0rkQEQf9tOcYj87bijnrFHO9JtPYugvMbtB7GjS+w9nliYhcttIO7sKvdsNS//4udo/T0qVLOXz4MMOGDWPhwoWEhYXRvXt3Fi9eTE5O2c3+yc7OZsuWLXTp0sW+zWQy0aVLF9avX1/gPuvXr8/XHiA6OrrQ9gBZWVmkpaXle4k4S4dravD5o23xrhrIHRljWUFrsGTDkgdh7WQtVyAiUpDk32HObWVy6BKNcapRowajR4/mt99+Y+PGjdSrV4/777+fmjVr8sQTT7Bnz57SrpPjx49jsVgICgrKtz0oKIjk5IIHzSYnJxfYPi0tjXPnzhW4z4QJE/Dz87O/QkNDS+cCREromiAflg5vR0TtQB7OfIyPLbfkfbDyJVj2JFhynVqfiMhlJWE1fNwd0stmQs0lDQ5PSkpixYoVrFixArPZzC233MLvv/9OREQEkydPLq0ay1VMTAypqan218GDB51dkgjVvd35dEgbejSpxcs59zE+535sGLD5I1h4H2SfdXaJIiLO9+t8mH8nZJ+B2lFlcopiB6ecnByWLFnCrbfeSp06dfjss88YNWoUR44cYfbs2axcuZJFixbx8ssvl2qh1atXx2w2k5KSkm97SkoKwcHBBe4THBxcYHtfX188PT0L3Mfd3R1fX998L5HLgYermXf7NWdEp3rMtHRnaPbjZBtu8Oe3MOtWSC94koSISKVns0Hc6/Dlo2DNhcZ3wt3zyuRUxQ5OISEhDBkyhDp16rBp0yY2b97M0KFD8wWMTp064e/vX6qFurm50aJFC1atWmXfZrVaWbVqFVFRBafKqKiofO0BVqxYUWh7kcudyWTwVHQDJt3ZlNVGa/plPkua4QtHtuYtV3C89G+Ti4hc1iw58NUIiJuQ9779aLj9v+DiXianK/asurlz53LnnXfi4eFRJgVdzMKFCxkwYAAffPABrVq1YsqUKSxatIhdu3YRFBRETEwMhw8fZs6cOUDecgSNGjVi+PDhDB48mNWrVzNy5EiWLVtGdHS0Q+fUrDq5XG386wSPzNuC/7kDzPN4k6tsyeBZFfp9CnX0x4GIXAEy0+CzAXnjmgwT9JgELQcDZff9Xewep/vvv98poQng7rvv5q233uLFF1+kWbNmxMfHExsbax8AnpSUxIEDB+ztw8PDWbZsGStWrKBp06ZMmjSJGTNmOByaRC5nra+uxtJH22GqVo/bzr3Eb7Z6cO4UzOkF2z93dnkiImUr7UjeUxUSVoOrF9yzwB6aylKxe5yuNOpxksvd6Yxshs3byq9/HeEd1/eINm/O+6DrK9D2MTAM5xYoIlLaUv7IGwSedhiqBEL/hVArMl+Ty6bHSUQuL/5ebswe3IpeLesxLGcUM3P/7lFd8QJ8OwasFucWKCJSmv5aAx93ywtN1evDQysvCE2HTmUw/us/yuT0LmVyVBEpV24uJl7v25h6gd68/O0DHLLV4DnX+Zg2/RdSD0HfGeBWxdlliohcmvhP4avHwJoDddpBv/l5Yzv/dvBkBu/9sJfFWw6Rfa5slmlRcBKpJAzDYMgNV1OnmhePL3DhSHY13nF7H7fdy/OWK+i/ELwDS+18FquNTYknOXomk0AfD1qFB2A26bagiJQBmw3WTPzfzLlGffMePfX3zLkDJzKY+sMePt96mFxr3gikNlcHUBYrMWqMUxE0xkkqou2HU3lo9mZqntnGR+6TqMoZ8K8N9y6GGg0u+fix25MY//UOklIz7dtC/DwY1zOCbo1CLvn4IiJ2udnwzSiIn5/3vv1o6PwCmEwcPZPJf1bt5dNNB+yBqcM11Xn8pmuoH+BSJt/fCk5FUHCSiiolLZMhczaTdngXs93eoI6RAh5+0O8TCGtf4uPGbk9i2Lyt/PsfjvN9TdPui1R4EpHSkZkKC++HxDVgmP9ebmAQaZk5/HfNX3y0NpFzOXnjODtcU51RXerTok7erbuy+v5WcCqCgpNUZOeyLTy1+DfWb9vNDLe3iDTtxWZ2w+j1PjS5s9jHs1httJ+4Ol9P0z8ZQLCfB2uf6azbdiJyaU4fhE/ugqM7wLUK3DWbrPDOzPl5P+/F7eV0Rg4AzUL9eabbtUTVrZZv97L6/tYYJ5FKzNPNzH/6NeedGt7cs+p5Jru+zy1sgs8fglP74IanirVcwabEk4WGJgAbkJSayabEkxf8IyYi4rAj8XmhKT0FvIOx9V/AtyeCmfD2Gg6ePAdAvUBvno5uwM0RQRjluOyKgpNIJWcyGTzRtT51A7154jM3DuXO52GXZfDDq3B6H9w6BcyuDh3r6JnCQ1NJ2omIXGB3LCweDDlnITCCPzrNYNyXqWzevxWAQB93nrq5AX1bXOWUnm0FJ5ErxG1NaxJa1ZOH57pzICOQ8a6zMf86L2+5grvm5I1/KkKgj2NPDXC0nYhIPps+zFt/zmYlq3ZHxrk/zYLZ+wBwM5sY2vFqHulYlyruzosvWgBT5ArSvHZVvhrRjvjgvjyU/SRnbe7wVxx8FA2nDxS5f6vwAEL8PCjsbzyDvNl1rcIDSrNsEansrBb47jlY/hTYrOwM7k3kX0NY8HuavUm2xcpnWw7x055jTixUwUnkihPo48FTNzfgVK1O3JU9jhSbPxzbie3Dm+DwlovuazYZjOsZAXBBeDr/flzPCA0MFxHHZZ+FRQ/A+qkAzHC7j+777uRs7oURJTk1k2HzthK7Pam8q7TTrLoiaFadVCYFrr/ECT52e4OGpoPYXDwx+n4IDXsW/zhax0lEiutMMnzaD478Sg6uPJn9CF9Z22IywFpIOnF09q6WI3ASBSepLApbfwnAmwymuv6HG82/YcPAuPkViBpx0Rl3WjlcRC5Jyh/Y5t+JkXaYUzYfHsoezW/GtXRrFMw324ruUfp0SJuLzt7VQ35FpMQsVhvjv95RYGgCSMeLIblPMTe3CwY2+P55WDYaLLmFHtNsMoiqW41ezWoRVbeaQpOIOG7vSnJn3IyRdpgEawi9s8fjGh5F7KgOdI0IcugQzpq9q1l1IleAotZfAsixmZkXMJJ9J4J5zmU+ps0fYzu1D+POWQ7NuBORiq88epLT107Hc2UMLljZYG3Is65jeOL21vRqVhPDMDh2Jtuh4zhr9q6Ck8gVwNG/zB7ueDWbEh9h6NYaTHF9H6+E1VhndMV07yKoGla2RYqIU5X12EWbJZc9cx+n/r55ACyxdGB75Ct80a0Rfp7/W0vu/Ozd5NTMAnvJz49xctbsXd2qE7kCOPqXWU1/L17v25i2PQbQL3ccybaqmI7vxvLfznBgYxlXKSLOcn4M5L97pktrFlvCoWS2vtHdHppmeTxAvSFzGXd783yhCS7/2bsKTiJXgOKsv2QYBgPbhTN28N08YJrAdmsY5nMnsM66FbZ9Vp5li0g5uNgYyPPbxn+9A0th09wuIivXwoxvfiT7w660yNpEps2VlY3e4L6n36Fp7aqF7tetUQjT7osk2C//H33Bfh5Of5C4ZtUVQbPqpLI4/xclkO8fyPNhqqB/jA6ezOCxOesYduJ1os2b8/a94WmMG58Fk/7uEqkM1iec4J4PNxTZrqhZbP+2Zf9JZi5czLizr1LDSOW0OYCsO+YT1LCtw8e4lDFXesiviFyS83/B/XsMQ/BFxjCEBnjxyaOdeOazqiTunMxQl28wfnwTy7E/Md8+Hdy8yvMSRKQMlPQZlIWFmvSsXN6I3cXpTZ8yyeUD3I0c0vwa4DdoMYZ/7WLVdn727uVEwUnkCtKtUQhdI4KL9Recl5sL7/ZvwbQ14xmzoiavunyE284vyT6RiNt9C8G3ZjlegYiUtpI8g7KwgeR9mtfii60HuTtjPi+7fgFATr1u+N75Ebh7l27hTqJbdUXQrTqR/1nz5zFmfTKfSbY3CTDSyfYMwu3+hVCzubNLE5ESslhttJ+4ushZbOdX6r7YYroeZDHJdRo9zJvyNrR7HG4aByZzGV5BwbQApog4Xcf6NRj/2MM86TeFP621cDuXQu6Mbti2f+7s0kSkhIozi+1iA8mDOcEit5fpYd6EzeQKvd6Hri87JTSVJQUnESmW2tW8eH9EHz5q8AFxlqa4WDMxFg8iZ8UrYLU6uzwRKQFHZ7EVtphuc2MPX7s/TxNTIidsPvzRdR40v7dcai9vGuMkIsXm6Wbm9f7tmbn2Y/Z+/wIPmZfjuu4tzib9QZW7Z1SasQwiVxJHxkAWNJC8j+lHJrjOwN3IZac1lCE5T/G0Z2MalWfx5Ug9TiJSIoZhMLhDPZoMfo/x5uFk2Vyo8te3nHm/M5za7+zyRKQEinoGpfGPm3kmrMS4zOdtt+m4G7l8Z2lJ3+zxHLLVcNrjUMqDgpOIXJJW4QEMe/xFXq72Bsdsfvik7ibjvRvI/esnZ5cmIqXEarUxd8N+Yj7fBoAvZ/nI9U0ecVkGwLu5vRmaM4pzeNgX062sFJxE5JIF+nrw0vBBfNJ0Nr9bw/DKPQ1zenHmx/dBE3dFKrT9J87Sf8YGXli6nbPZFjoFnGSp2wt0Mv/GOZsbI7If4+3cuzgfKZz5OJTyoOUIiqDlCESKZ/nWBGxfPkYPYx0AKfXuIqjfVHBxd3JlIlIcFquNWT/v483vdpGZY8XT1czUyCQ673wBI/sMyVTnwawn+MMWDpTuA4FLQ1l9fys4FUHBSaT4Eo6eYfXHLzD43CzMho0k3yYEPbgIk9/l8Q+qiFxcwrF0xizexpb9pwBoG16V92uvxn/jm3kN6rTHcsdMNh01l+hxKOVBwclJFJxESuZctoW58z7m7v0v4mdkcMocgLnffHyvcfw5VSJSvixWGx+t/YtJ3/9JVq6VKm5mXrw5lLsOvYax65u8Rq0ehujXwOzq3GKLoODkJApOIiVns9lYvmYd9X94hGuMQ+TgwuGo8YTdPByMy+cvUxGBP1PO8PTibfx28DQAHa6pzludPAla/iAc/xPMbtDjbYi838mVOkbByUkUnEQu3a59R0iZO5iOlvUA7AjuxbWDP8Dk5unkykQkx2JlelwC767eQ47Fho+HCy/0iODOKr9iLH0Uss+AT024aw6EXu/sch2mR66ISIV1bVhNWjz9NV/VeASLzSAi+Uv2vXkDJw4nOLs0kSvaH0dS6TV1HZNW/EmOxcZN1way4vH23JU2E2PR/XmhqU57eGRNhQpNZUk9TkVQj5NI6bHZbKyJ/YymG0ZT1TjDKXw5fNNUGnXo5ezSRK4oWbkW/rNqL9PXJJBrteHv5cpLPa+jV313jM+HQMLqvIZthkPX8Zf9eKaCXPE9TidPnuTee+/F19cXf39/HnzwQdLT0y+6z8CBAzEMI9+rW7du5VSxiPybYRjc2P0uTt+/gj2mulQljYiVA1gz4xlycnOdXZ7IFWHrgVP0eHctU3/YS67VRvdGwax4oiO9ayRjfNAxLzS5ekHfj6Db5T8IvLxVmB6n7t27k5SUxAcffEBOTg6DBg3i+uuv55NPPil0n4EDB5KSksLMmTPt29zd3alatarD51WPk0jZOHc2ne0fDeX6k18DsNm1JUEDZxNa6yonVyZSOZ3LtvDW97v5eF0iNhtU93bnlV7X0b1RMPwyA2JjwJoDAXXh7rkQdJ2zS74kV/Tg8J07dxIREcEvv/xCy5YtAYiNjeWWW27h0KFD1KxZs8D9Bg4cyOnTp1m6dGmJz63gJFK2fv9mKtdsfgkPcjhsq8HujlPp3Fk9wyKl6ee9xxn7+e8cOJkBQJ/IWrx4awT+5mz4+nHYvjivYcOe0Ot98Kj433dX9K269evX4+/vbw9NAF26dMFkMrFx48aL7hsXF0dgYCANGjRg2LBhnDhx4qLts7KySEtLy/cSEcdZrDbWJ5zgy/jDrE84gcV68b/NGt86grT+35JsDqGWcYx2a+5l0fsvkXo2u5wqFqm8Us/l8MzibfSfsZEDJzMI8fNg5qDrefuuZvin/wUzbsoLTYYZbv4/uGtupQhNZcnF2QU4Ijk5mcDAwHzbXFxcCAgIIDk5udD9unXrRp8+fQgPDychIYFnn32W7t27s379esxmc4H7TJgwgfHjx5dq/SJXitjtSYz/egdJqZn2bY48hiGw/vVYnlzPXx8N4OoTa7jr6GRWTtqIzx3v0zoivDxKF6l0Yrcn8cKXf3DsTBYA97epw5huDfDxcIX4T2DZk5CTAd7BcOdMqKPFaR3h1B6nsWPHXjB4+9+vXbt2lfj4/fr147bbbqNx48b07t2bb775hl9++YW4uLhC94mJiSE1NdX+OnjwYJ+rHlEAACAASURBVInPL3Ilid2exLB5W/OFJvj/9u49Lsoy///4a2aQQZSDCjKgoOAJz2iuhFZansittLPfatMOtlru5mqWdtB1q3Wtfh1sXWvbUr9p+q02O5odTCvNUwblOc+AChrKACoIM/fvjxGUBLwhYDi8n4/HPGxurpm5xku7397XdX8uSHfmMX7RD6zYeqTc19v8mxEz4QPS+j5OITYGu78jbOkwXnt7GXkFrursuki9cjQ7j/GLNjNu0Q8cy8knJrQJ74xL4MmR3QiwnoH374f3x3tCU8xAGPetQlMFePWK0+TJkxkzZky5bWJiYnA4HBw9erTE8cLCQo4fP47D4TD9eTExMYSEhLBnzx4GDRpUahu73Y7drs1IRSrC5TaY+dF2SpuUMwALMPOj7Qzp4ih/LyuLhdbDp5DX+TJy3hpN24IM7tx2L//eP5ZBd0yjS6ugavoGInWf222wZFMK//h0Jzl5hfhYLYwb0I4JV7XHr5ENju6Ed0bDsZ1gscLAR+HySWAtfQZGSufV4BQaGkpoaOhF2yUkJJCVlcXmzZu55JJLAPjqq69wu93Ex8eb/ry0tDQyMzMJD9dGoyJVaeP+4xdcaTqfARxx5rFx/3ES2rW46Pv5RSfg95f1HFt0L6GHV/Kn0/NY8epm1vb/B3cN7oWPrU4szxSpMXuO5jDtvS1sOuDZlLdn6yBm3dCDLhGBYBiweSF8+ggUnvZMzd30OrS9zMu9rpvqxP99OnfuTGJiImPHjmXjxo2sXbuWCRMmMGrUqBJ31MXGxrJs2TIAcnNzmTJlCuvXr+fAgQOsXLmSESNG0L59e4YNG+atryJSLx3NKTs0VaYdAP7NCR37X3IHzqQQHxKtGxn+3c08Puc19hzNqWRPReqXvAIXL3zxM1e/9C2bDpzA39fGjGu78N79/T2h6XQWvDMGPvqzJzS1uwrGrVFo+g3qxOJwgMWLFzNhwgQGDRqE1WrlxhtvZM6cOSXa7Nq1C6fTCYDNZuOnn35i4cKFZGVlERERwdChQ3nyySc1FSdSxVoG+FVpu2IWC00HTsTocAW5b42m1ckUns56hH++vAn/wQ9z9+Udyp/6E6nHvtvzC4+9v5X9v5wE4KrYljw5shutgs/uAZmyAf57LzhTwOoDg6ZDwp/AWieumdRadaKOkzepjpPIxbncBpfN/op0Z16p65wsgCPIjzWPXFX5oJOfw6n3J+K/w1NvZoM7lv+ETuORWwfRvmVApfsuUtf8kpvP05/sYFnSIQBCA+xMv6YL1/QIx2KxgNsF3z4Pq2eB4YJmbeGmN6DVJd7teA1r0AUwvUnBScScorvqgBLhqSgmzbujd7klCcwykpdQ+NEkGrlO4TT8+avrXtoPGs19V8TQSGufpB5zuw2WbkrlH5/uIDuvEIvFU2LgoWGdCPQ7uy3KiQPw3h8hdb3nefeb4ffPN8jaTApOXqLgJGJeZes4VVjmXs68fQ++GUkALHP1563mf+Kvt/aja4TuvJP6Z0uak8c/2MqPqVkAdAkP5O83dCcuMtjTwDDgxyWw/GE4kwO+ATD8Weg5CiwNczpbwclLFJxEKsblNti4/zhHc/JoGeBH3+jm1bMOyVWA8c2z8PWzWHCTZoQwpXA8PS+7hgcHdaCxr26xlrrPeaqA5z7fxaINBzEMaGr34S9DOjI6oc25u0tPHYePJ8L2DzzPIy+FG171TNE1YApOXqLgJFLLpW7E9e692JwHcRsW/uMazv8F3Mn06y9hQMeLlzsRqY3cboP//pDGPz7dSebZ7YdGxEXw6PDOhAWed5PF7i/gwz9BzhHPAvArH4X+E1WbCQUnr1FwEqkD8nNgxVRIWgTAbncrJheMo22Py3nimi6EBuhOWqkdzFyR/TE1ixkfbiP57LRc+5ZN+duIrvRrF3KuUV42fPYoJL3ped6iA9z4GkT0qqmvUuspOHmJgpNIHbLrU9wf/hnryaMUGlbmua5jvs8t/CWxG7f1jVLpAvGqi60BPJaTzzMrdvLO5jQAmvja+POgDtzVPxpfn/NufNi3Gj6YAM5UwAKXjoerngBf/5r9QrWcgpOXKDiJ1DGnjsPyh2DrfwHY4Y7ioYJxWCJ68LcR3egd1czLHZSGqOiu01+fcC147kK9sXcrPt+WQU5+IQA39m7NI4mdaHn+tFx+Lnz5V9j0mud5cBsYOQ/a9q+Bb1D3KDh5iYKTSB21bRnGJ5OxnMqkECuvFl7DnMIbGNEnhkcSY2nRtGLTdzW26F3qnaI6Z+VtS1SkR+sg/npd1wsD/p6V8NFETzFLgD53w5Anwd60GnpcP1TX+bvOVA4XEamQrtdjadMflj+Ez/YPeMDnQxKtm3h4831cuTWdSUM6cvulbUzVfqqxMgtSL11sL8ci910Rw9TEWKznB/JTx+HzxyF5sed5UBRc95Jn6xTxClWLE5H6q2lLuOV/4ZY3oWkY7axHeMf+NyYV/odnP9pM4ovfsGrX0XLfomiK5dcnvnRnHuMX/cCKrUeq8xtIPWB2j8auEYHnQpNheMoLzI0/G5osED8O7l+n0ORlCk4iUv91uQ4e2ABxd2DFYIzP56z0e5j2mau5a/5GRr+xkd0ZF24c7HIbzPxoe6nbyBQdm/nRdlxuA5fbYN3eTD5IPsS6vZm43FoFIR4V3ssxKwWWjIK374STRyGkI9y9Aq6eram5WkBTdSLSMDRuBiPnQvcb4aOJOLIO8qrvC3zl7s0TP48mcc8vjPpdJA8O6lC8IPdiUywGcMSZxz+/2sPSTSmaypML5BW4SEo5UbwIvDRFezn2jQqAtS/B6n9AwSmwNoL+D8IVU6BRBTfIlmqjxeEXocXhIvXQmVPw7XMYa+dgcReQh53nC27gDdfVNGpkZ+zl0Yy9Ioavdh7lwaXJlfqIqt6jT+qWM4Vu3v4+lX9+tYf07LLDd9GfkyVXW7h021NwdJvnQFQ/uOYFaBlb/Z2tp3RXnZcoOInUTyu2HmHhB58xMX8e8dadAOw2WjG9YAzr3F1p3sSXa3uEs3DdwUp/RtGVhDWPXNXg78BrKHclFrrcvJd0iDkrd5N24jQArYIbM3loR/x8rDz5yY4SVya7BObx7/CPaH1wmedA4+Yw9EmIu73B7jFXVRScvETBSaT+Ob+mjgU3N9m+YZrPWzS35AKw0pLAE6f/h8OEYLF41un+FkvGXkpCuxa/veN1VEO4K9HlNvj4p8O8+OVu9v9yEoDQADsPDGzHqL5R+DWyFbfbuP84x5w5dD/8Dm23zMGSn+15k7jbPSUGmjTcPytVScHJSxScROqXsmrqBJHLJJ93uMP2JTaLQaHVj/9wPS+cGkY+vr/pM18aFceIuFa/6T3qqrIKPxb51229GN4jokb7VJUKXG4+SD7Mv1btYd/ZwNS8iS/jBsTwh0vblr7Z9P5vYPnDcGyH53l4HAx/FiL71mDP6z/VcRIRqQJlLfh20pQZhXex1HUVf220kHh2Mo4lXGP/gmcKRvGhO4FzK1IqxuxdVfVNeXclFpmwJIl/YmF4j7p15Sm/0MW7m9OYt3pv8ZRcsH8j7ukfzV2XRdPUXsrp9Zfd8MV02LXc89y/BQyaDr3+oE156xAFJxFpUC5WU2eH0YZbzzzBu5cdpuu2/0fr0+nM8f0nd7s/5amC2/neML9Yt/huqejmv7HXdZOZwo9uA+5/6wdesdaNRfQ5eQUs2ZjCG2sOFC/6Dmnqy72Xx3DHpW1KD0wnM+Hrf8D3b4C7ECw2+N09cOWjnrs9pU5RcBKRBsXc1R8LBZ1v5KcOw/nmf2dyv88HxFn38q79b3zq+h2zC0dxwCj/JF90bWrGtV3q5SJoM8wWfgRPPawhXRy19vcq3ZnH/LX7eWtDSvF+co5AP/44IIZRv4sqfUqu4DRs/Dd88/8g3+k51vFqGPI3CO1Yg72XqqTgJCINSt/o5oQH+ZHuzCt1CunXV4kmNh3F286B/MXnHW61reZq2yaGWDfztmsAcwpvIJ0Wxa87//0c9Wzxc2VUZIryiDOPjfuP17pF9FsPOZm/9gAf/niIApdnhNu3bMp9l8cwolcEdp9SApOrAJIWwdfPQM5hzzFHdxj6NMQMqMHeS3VQcBKRBsVmtTDj2i6MX/TDBWGntKtEnrZ5PFY4lgWuRB7xWcogWxK3+aziRtsafgi7kedPX8OmY9bi97ikTTMmD+3EpTENc4quSFFINbNPG1TsClVlmC2JUOBy8+nWdBZ+d4DNB08UH+8b3Zw/XhHDlZ1altxProjbDdveg1VPw/F9nmNBkTBwGvQcpXVM9YTuqrsI3VUnUj9V5Bb5X7ftY9nJY37v0svYDoDhG0BqxzuZnXUVn+zJL35drCOA2y9tw/W9WpW+9qUBWLH1COMW/WCqbXWWbTAz3kecp3l7UxqLNxzkaI5nHBvZLAzvHs5d/aOJiwwu/c3dbtj5kecKU8ZWzzH/EE/F7z53gY+9Wr6TlE/lCLxEwUmk/qpIUcYL2rZthm3fV7ByJqT/5Gnk25QTXUczNz+RN386SX6hG4AmvjZG9GrF7fFRdI0IqqmvV2ss/+kwE5YkUdb2fdVdKLSskghFVxzHDYjh54xcVu86WtzH0AA7t8dHcVt8VNlTjm4XbH8fvn72XGkBeyD0+zNcOl77ynmZgpOXKDiJSLncbtj5MXzzDKRv8Rxr5E9+3Bje87ue/ySfYu+xk8XNo0Oa0DsqmKFdHQzuHFZrF0NXteU/HeH+ty688lTdW9OUVberLPHRzbktPoqru4Xj62Mt400LYOt78O1z8MvPnmP2QIgf5wlM/g17ira2UHDyEgUnETHFMODnFfD1bDic5Dlm88Xofgs/Rt3JUxtcfH/eehkAu4+Vu/q3ZdKQTmWfpOsRb1QQX7c3k/95bf1F213bI5y/DOlITGg5V4nyc+CHN2H9v8CZ6jnmFwSXPgDxf4TGZUzliVcoOHmJgpOIVIhhwJ4v4ZvnIPXcCXulqxevFl7DRiOWXxfS9Pe18fvu4fy+Rzj924fQyFZ/Q1RN71m3aP0BHn9/20XblVvdPScDNrwC378OeWfLCjQJ9Vxh6nsf+OncUBspOHmJgpOIVFrqRoy1L2Hs/ATr2RU2W9xt+V/XUD509St1K5dg/0YM6+JgWLcw+rULKd7jTMxLd+bx2bZ0lm85wsYDx03tNXjBwnTDgLTvPXWYti0Dd4HneIv2kDABev4PNGqYFeHrCgUnL1FwEpHfYt3eTB79zzLutS3nRts3+Fk8J+ATRlP+zzWQRa7BpBktGdIljKSUE/ySe6b4tX6NrFzWPoRBncO4KrYlYYE6UZem0OUmKTWLVTuPsnrXMbYfyS7x80Y2S3ENpl+7YGF6wWnY+l/Y+BocST7XMDLes+i703Cw1t8rgvWJgpOXKDiJyG/xQfIhHlzqOQE3I5tbbF9zh+1LIq3HAHAbFr51d8f/0tH0HnIHG1Jz+XRLOit3ZHD4VwuaYx0B9GsXQv/2Legb3ZwAv0Y1/n1qA8Mw2HvsJOv3ZbJubybf7j5Gdl5h8c8tFugd1YyruzkY1tXBtsNOxp8tiVBa3a55d/QmscUxT9HKLW/D6bNr0Wx26H4T/O5eaNUbqPmpRqk8BScvUXASkd+itMXJVtxcaU3iTtsXDLD9dO4HjZtB91ug1x0Yju7sOJLDVzsz+HLHUX5Myyox5WSzWujZOojftW1Or6hm9G4TXG83Ey5wudmVnkNSahYb9x9n/b5MjuXkl2gT1LgRAzqGcmVsKFd0CKVF05K1k0pbmN4psIAXuuymS/qH50pKAARHQZ97PJvvNmlR7ntU9+J2qTwFJy9RcBKR36LodviytnhpY8lgjP9axjRZhyX70LkftOwC3W70PJpHk5mbz7p9mazdk8l3e3/hYOapC96rdbPG9I5qRrdWgXQO9zxCmtat4osFLjf7fznJzvQcfkrNIjk1i62HneQVuEu08/Wx0jsqmISYEC7r0IK4yGYXvfLjcht8/3Matj0riElfQbMj32BxnZ0atflC7O+h1x0Qc+UFVb7LqwUF1VdOQSpPwclLFJxE5LcqOulCOVNFXVrCvlWe6aKdn4Dr3FonWl3iCVCdr4PgSADSTpxi/b7jbD54gqSUE+zKyCl1EXRogJ3O4YG0C21CTEgT2oY0oW2LJkQEN/bqFJPzVAEpx09x8PhJDmae4ueMHHal57Dv2EnOuNwXtA/w86Fn62D6tG3GpTEtiIsMNr9w/swpz+/t1v/Crk+h4LzQGdYdev8But9cZv2li9WCqu4CnlI5Ck5eouAkIlWhQtM8p0/Ajo9h67uw/xswzgsSju6eBcqdhkN4T8+CHiAnr4AfU50kpZxg+5FsdhzJ5uDxU2XeUeZrsxIWZMcR6EdYoF/xr82a+BLo50NQ40YEnn34+Vjx9bHSyGbF12Yt3qfNMAwK3QYut0GBy82pMy5y8grJzS8kJ6+AnLxCMnPzOZqTz7Ecz69Hc/JIPX4a5+mCMn+vmvja6BAWQPdWQcRFBtMzMpiYkCal7w9Xltyj8PNnsGs57F0FhafP/axZW+h2kyeMhnW56FuZrQVVnVvGSMUpOHmJgpOIVJVKLSzOPQrb3vfcEp+6vmSICmwF7QdBzECIHgBNQkq89GR+ITvTc9iZns3+Yyc5kHmSA5mnSMk8VepVHbNsVguGYZS5hYpZoQF2opr706a5P+1aNqVTWACdHAG0Cm5csZAEnmreaZtg32rY+5WnlMD51/eCIqHztZ7A1Kp3ceA04/wF/uUptxaU1DgFJy9RcBKRWuPkL7D7c89U3t6vSk45ATh6eEJUm/4Q2bfcqacjztOkO/NIz84j3ZlHRnYeGdn5ZJ0uILvokVdA9ulC0yHLaoEAv0Y0tfsQ4OdDU7sPLZr6Ehpgp2WAH6EBdkKa+nL8ZAEWi0FksyaVvyvNVeBZ0J2yHvZ9DQfXwpnckm3C4zzrljpdDWHdKhSWzqcrTnVTgw9OTz/9NJ988gnJycn4+vqSlZV10dcYhsGMGTN47bXXyMrKon///sybN48OHTqY/lwFJxGplQry4MC3Z6+wrIKjpVTHDunoCVCRl0JEHIR0Ap8Li25ejNttcMblpsDlpsDlmZazWMDHasVmteBjtWCzWrD7WLGUE04qfVeaYUD2YU9QSt3oeRzaXHL6DcC/hefKW7srod0gCKqaqz8XW+CvNU61U4MPTjNmzCA4OJi0tDRef/11U8Fp9uzZzJo1i4ULFxIdHc0TTzzBli1b2L59O35+5m7bVXASkTohJ8OzHmr/akjZAJm7L2xjbQQtYz0Loh3dPcGqRTvPNJbNp1q7Z+qutK4OOHUcju+FzD2Qsc0TltK3nKutdD6/YE9hyrb9PXfChXWrtuKUphb46666WqXBB6ciCxYsYOLEiRcNToZhEBERweTJk3nooYcAcDqdhIWFsWDBAkaNGmXq8xScRKROOpnpWfOTusFzhSZ9C+Q7S29rbeRZMN2iHQS1hoBwCIyAAAcERHim/PyCwKdypQ1cboMr/vEFOdknCLKcJBQnDstxHJYThJ39tYPPUTrbj2HJK6OPFhuEdvKsT4qM91xFa9G+Rqt4q45T3VJd5+/q/SeGF+3fv5/09HQGDx5cfCwoKIj4+HjWrVtXZnDKz88nP/9cYbXs7OxS24mI1GpNWkCnRM8DPNNdzlRPgCp6ZO6F4/vAle+5QlXaVarz+fh5ApQ90PPftkZnH75g9QHD5Vl75Crw7O1WeAbO5GKcOsHaglwo70K/ARTlkcDW0CLGU8sqrJvn6lhorNf3hkvsFs6QLg5VDm/g6m1wSk9PByAsLKzE8bCwsOKflWbWrFnMnDmzWvsmIlLjLBZPRezgKM+C6SJuN2QfOjs9ttezlignHXIOQ/YRyDkCeU7AgMI8yM2D3IwKffT5J5rThi/HjCDSac5RoxnpRjPSjeakGqHcOmwgVyXEg69/lXzl6mCzWrQAvIHzanCaOnUqs2fPLrfNjh07iI2NraEewbRp05g0aVLx8+zsbCIjI2vs80VEapTV6imqGRzpuSOvNG43nMnxBKiiR2H+uStLRVeZrDbPFSjr2atQNh+wB5B01OCe/9tNDv4UlHPaGdO6R60OTSLg5eA0efJkxowZU26bmJiYSr23w+EAICMjg/Dwc3PPGRkZxMXFlfk6u92O3V63tigQEalWVqtnis4vqFIv7xFuYF/h5MRFKm/3jS69fIJIbeLV4BQaGkpoaGi1vHd0dDQOh4OVK1cWB6Xs7Gw2bNjA+PHjq+UzRUTkQjarhRnXdmH8oh+wUPpdaTOu7XLBWqFKFQwVqWZ1Zo1TSkoKx48fJyUlBZfLRXKyp4pr+/btadq0KQCxsbHMmjWL66+/HovFwsSJE3nqqafo0KFDcTmCiIgIRo4c6c2vIiLS4CR2C2feHb0vuCvNUcZdabqDTWqrOhOcpk+fzsKFC4uf9+rVC4BVq1YxcOBAAHbt2oXTee5W1ocffpiTJ09y3333kZWVxWWXXcaKFStM13ASEZGqY/autLJqPqU78xi/6AfVTBKvqnN1nGqa6jiJiNScoirdRy6yHkpVuuViquv8XXOVw0RERC5i4/7jZYYm8KyPOuLMY+P+4zXXKZHzKDiJiEitcTSn7NBUmXYiVU3BSUREao2WAebWoJptJ1LVFJxERKTW6BvdnPAgP8pavWTBc3edaj6Jtyg4iYhIrVFU8wm4IDyVV/NJpKYoOImISK1SVPPJEVRyOs4R5KdSBOJ1daaOk4iINBxmaz6J1DQFJxERqZVsVgsJ7Vp4uxsiJWiqTkRERMQkBScRERERkxScRERERExScBIRERExScFJRERExCQFJxERERGTFJxERERETFJwEhERETFJwUlERETEJAUnEREREZMUnERERERMUnASERERMUnBSURERMQkBScRERERkxScRERERExScBIRERExScFJRERExCQFJxERERGTFJxERERETFJwEhERETFJwUlERETEJAUnEREREZMUnERERERMUnASERERMUnBSURERMQkBScRERERkxScREREREyqM8Hp6aefpl+/fvj7+xMcHGzqNWPGjMFisZR4JCYmVnNPRUREpL7y8XYHzDpz5gw333wzCQkJvP7666Zfl5iYyPz584uf2+326uieiIiINAB1JjjNnDkTgAULFlTodXa7HYfDUQ09EhERkYamzkzVVdbq1atp2bIlnTp1Yvz48WRmZnq7SyIiIlJH1ZkrTpWRmJjIDTfcQHR0NHv37uXRRx/l6quvZt26ddhstlJfk5+fT35+fvHz7OzsmuquiIiI1HJeveI0derUCxZv//qxc+fOSr//qFGjuO666+jevTsjR47k448/ZtOmTaxevbrM18yaNYugoKDiR2RkZKU/X0REROoXr15xmjx5MmPGjCm3TUxMTJV9XkxMDCEhIezZs4dBgwaV2mbatGlMmjSp+Hl2drbCk4iIiABeDk6hoaGEhobW2OelpaWRmZlJeHh4mW3sdrvuvBMREZFS1ZnF4SkpKSQnJ5OSkoLL5SI5OZnk5GRyc3OL28TGxrJs2TIAcnNzmTJlCuvXr+fAgQOsXLmSESNG0L59e4YNG+atryEiIiJ1WJ1ZHD59+nQWLlxY/LxXr14ArFq1ioEDBwKwa9cunE4nADabjZ9++omFCxeSlZVFREQEQ4cO5cknn9QVJREREakUi2EYhrc7UZtlZ2cTFBSE0+kkMDDQ290RERERE6rr/F1npupEREREvE3BSURERMQkBScRERERkxScRERERExScBIRERExScFJRERExCQFJxERERGTFJxERERETFJwEhERETFJwUlERETEJAUnEREREZMUnERERERMUnASERERMUnBSURERMQkBScRERERkxScRERERExScBIRERExScFJRERExCQFJxERERGTFJxERERETFJwEhERETFJwUlERETEJAUnEREREZMUnERERERMUnASERERMUnBSURERMQkBScRERERkxScRERERExScBIRERExScFJRERExCQFJxERERGTFJxERERETFJwEhERETFJwUlERETEJAUnEREREZMUnERERERMqhPB6cCBA9xzzz1ER0fTuHFj2rVrx4wZMzhz5ky5rzMMg+nTpxMeHk7jxo0ZPHgwu3fvrqFei4iISH1TJ4LTzp07cbvdvPrqq2zbto0XXniBV155hUcffbTc1z3zzDPMmTOHV155hQ0bNtCkSROGDRtGXl5eDfVcRERE6hOLYRiGtztRGc8++yzz5s1j3759pf7cMAwiIiKYPHkyDz30EABOp5OwsDAWLFjAqFGjTH1OdnY2QUFBOJ1OAgMDq6z/IiIiUn2q6/ztU2XvVMOcTifNmzcv8+f79+8nPT2dwYMHFx8LCgoiPj6edevWlRmc8vPzyc/PL/E54BkAERERqRuK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enq6YRiGMXXqVOMPf/hDcfui2xmnTJli7Nixw5g7d67KEVSRio7F4sWLDR8fH2Pu3LnGkSNHih9ZWVne+gr1RkXH4td0V13VqehY5OTkGK1btzZuuukmY9u2bcbXX39tdOjQwbj33nu99RXqlYqOx/z58w0fHx/jX//6l7F3715jzZo1Rp8+fYy+fft66yvUGzk5OUZSUpKRlJRkAMbzzz9vJCUlGQcPHjQMo/rO3w0+OBmGYbz88stGVFSU4evra/Tt29dYv3598c9Gjx5tDBgwoET7VatWGXFxcYavr68RExNjzJ8/v2Y7XI9VZCwGDBhgABc8Ro8eXfMdr4cq+vfifApOVauiY7Fjxw5j8ODBRuPGjY3WrVsbkyZNMk6dOlXDva6/Kjoec+bMMbp06WI0btzYCA8PN26//XYjLS2thntd/6xatarcc0B1nb8thqFrhSIiIiJmNOg1TiIiIiIVoeAkIiIiYpKCk4iIiIhJCk4iIiIiJik4iYiIiJik4CQiIiJikoKTiIiIiEkKTiIiIiImKTiJiIiImKTgJCIiImKSgpOINCjHjh3D4XDw97//vfjYd999h6+v7wU7p4uI/Jr2qhORBmf58uWMHDmS7777jk6dOhEXF8eIESN4/vnnvd01EanlFJxEpEF64IEH+PLLL+nTpw9btmxh06ZN2O12b3dLRGo5BScRaZBOnz5Nt27dSE1NZfPmzXTv3t3bXRKROkBrnESkQdq7dy+HDx/G7XZz4MABb3dHROoIXXESkQbnzJkz9O3bl7i4ODp16sSLL77Ili1baNmypbe7JiK1nIKTiDQ4U6ZM4d133+XHH3+kadOmDBgwgKCgID7++GNvd01EajlN1YlIg7J69WpefPFF3nzzTQIDA7Farbz55pt8++23zJs3z9vdE5FaTlecREREREzSFScRERERkxScRERERExScBIRERExScFJRERExCQFJxERERGTFJxERERETFJwEhERETFJwUlERETEJAUnEREREZMUnERERERMUnASERERMUnBSURERMSk/w/w7zJxEVZOkAAAAABJRU5ErkJggg==",
      "text/plain": [
       "PyPlot.Figure(PyObject <matplotlib.figure.Figure object at 0x128e2bed0>)"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "\u001b[1m\u001b[33mWARNING: \u001b[39m\u001b[22m\u001b[33mArray{T}(::Type{T}, m::Int) is deprecated, use Array{T}(m) instead.\u001b[39m\n",
      "Stacktrace:\n",
      " [1] \u001b[1mdepwarn\u001b[22m\u001b[22m\u001b[1m(\u001b[22m\u001b[22m::String, ::Symbol\u001b[1m)\u001b[22m\u001b[22m at \u001b[1m./deprecated.jl:70\u001b[22m\u001b[22m\n",
      " [2] \u001b[1mArray\u001b[22m\u001b[22m\u001b[1m(\u001b[22m\u001b[22m::Type{Float64}, ::Int64\u001b[1m)\u001b[22m\u001b[22m at \u001b[1m./deprecated.jl:57\u001b[22m\u001b[22m\n",
      " [3] \u001b[1m#predict#17\u001b[22m\u001b[22m\u001b[1m(\u001b[22m\u001b[22m::Bool, ::Function, ::GaussianProcesses.GP, ::Array{Float64,2}\u001b[1m)\u001b[22m\u001b[22m at \u001b[1m/Users/cedric/.julia/v0.6/GaussianProcesses/src/GP.jl:206\u001b[22m\u001b[22m\n",
      " [4] \u001b[1m(::GaussianProcesses.#kw##predict)\u001b[22m\u001b[22m\u001b[1m(\u001b[22m\u001b[22m::Array{Any,1}, ::GaussianProcesses.#predict, ::GaussianProcesses.GP, ::Array{Float64,2}\u001b[1m)\u001b[22m\u001b[22m at \u001b[1m./<missing>:0\u001b[22m\u001b[22m\n",
      " [5] \u001b[1m#predict#29\u001b[22m\u001b[22m\u001b[1m(\u001b[22m\u001b[22m::Bool, ::Function, ::GaussianProcesses.GP, ::Array{Float64,2}\u001b[1m)\u001b[22m\u001b[22m at \u001b[1m/Users/cedric/.julia/v0.6/GaussianProcesses/src/glue/ScikitLearn.jl:10\u001b[22m\u001b[22m\n",
      " [6] \u001b[1mpredict\u001b[22m\u001b[22m\u001b[1m(\u001b[22m\u001b[22m::GaussianProcesses.GP, ::Array{Float64,2}\u001b[1m)\u001b[22m\u001b[22m at \u001b[1m/Users/cedric/.julia/v0.6/GaussianProcesses/src/glue/ScikitLearn.jl:10\u001b[22m\u001b[22m\n",
      " [7] \u001b[1minclude_string\u001b[22m\u001b[22m\u001b[1m(\u001b[22m\u001b[22m::String, ::String\u001b[1m)\u001b[22m\u001b[22m at \u001b[1m./loading.jl:515\u001b[22m\u001b[22m\n",
      " [8] \u001b[1minclude_string\u001b[22m\u001b[22m\u001b[1m(\u001b[22m\u001b[22m::Module, ::String, ::String\u001b[1m)\u001b[22m\u001b[22m at \u001b[1m/Users/cedric/.julia/v0.6/Compat/src/Compat.jl:478\u001b[22m\u001b[22m\n",
      " [9] \u001b[1mexecute_request\u001b[22m\u001b[22m\u001b[1m(\u001b[22m\u001b[22m::ZMQ.Socket, ::IJulia.Msg\u001b[1m)\u001b[22m\u001b[22m at \u001b[1m/Users/cedric/.julia/v0.6/IJulia/src/execute_request.jl:154\u001b[22m\u001b[22m\n",
      " [10] \u001b[1meventloop\u001b[22m\u001b[22m\u001b[1m(\u001b[22m\u001b[22m::ZMQ.Socket\u001b[1m)\u001b[22m\u001b[22m at \u001b[1m/Users/cedric/.julia/v0.6/IJulia/src/eventloop.jl:8\u001b[22m\u001b[22m\n",
      " [11] \u001b[1m(::IJulia.##14#17)\u001b[22m\u001b[22m\u001b[1m(\u001b[22m\u001b[22m\u001b[1m)\u001b[22m\u001b[22m at \u001b[1m./task.jl:335\u001b[22m\u001b[22m\n",
      "while loading In[9], in expression starting on line 13\n"
     ]
    }
   ],
   "source": [
    "srand(2)\n",
    "\n",
    "n_samples = 30\n",
    "degrees = [1, 4, 15]\n",
    "\n",
    "true_fun(X) = cos.(1.5 * pi * X)\n",
    "X = rand(n_samples)\n",
    "y = true_fun(X) + randn(n_samples) * 0.1\n",
    "\n",
    "gp = fit!(GP(logNoise=-10.0), hcat(X), y)\n",
    "\n",
    "X_test = linspace(0, 1, 100)\n",
    "plot(X_test, predict(gp, hcat(X_test)), label=\"Model\")\n",
    "plot(X_test, true_fun(X_test), label=\"True function\")\n",
    "scatter(X, y, label=\"Samples\")\n",
    "xlabel(\"x\")\n",
    "ylabel(\"y\")\n",
    "xlim((0, 1))\n",
    "ylim((-2, +2))\n",
    "legend(loc=\"best\");"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Cross-validation score:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "\u001b[1m\u001b[33mWARNING: \u001b[39m\u001b[22m\u001b[33mArray{T}(::Type{T}, m::Int) is deprecated, use Array{T}(m) instead.\u001b[39m\n",
      "Stacktrace:\n",
      " [1] \u001b[1mdepwarn\u001b[22m\u001b[22m\u001b[1m(\u001b[22m\u001b[22m::String, ::Symbol\u001b[1m)\u001b[22m\u001b[22m at \u001b[1m./deprecated.jl:70\u001b[22m\u001b[22m\n",
      " [2] \u001b[1mArray\u001b[22m\u001b[22m\u001b[1m(\u001b[22m\u001b[22m::Type{Float64}, ::Int64\u001b[1m)\u001b[22m\u001b[22m at \u001b[1m./deprecated.jl:57\u001b[22m\u001b[22m\n",
      " [3] \u001b[1m#predict#17\u001b[22m\u001b[22m\u001b[1m(\u001b[22m\u001b[22m::Bool, ::Function, ::GaussianProcesses.GP, ::Array{Float64,2}\u001b[1m)\u001b[22m\u001b[22m at \u001b[1m/Users/cedric/.julia/v0.6/GaussianProcesses/src/GP.jl:206\u001b[22m\u001b[22m\n",
      " [4] \u001b[1m(::GaussianProcesses.#kw##predict)\u001b[22m\u001b[22m\u001b[1m(\u001b[22m\u001b[22m::Array{Any,1}, ::GaussianProcesses.#predict, ::GaussianProcesses.GP, ::Array{Float64,2}\u001b[1m)\u001b[22m\u001b[22m at \u001b[1m./<missing>:0\u001b[22m\u001b[22m\n",
      " [5] \u001b[1m#predict#29\u001b[22m\u001b[22m\u001b[1m(\u001b[22m\u001b[22m::Bool, ::Function, ::GaussianProcesses.GP, ::Array{Float64,2}\u001b[1m)\u001b[22m\u001b[22m at \u001b[1m/Users/cedric/.julia/v0.6/GaussianProcesses/src/glue/ScikitLearn.jl:10\u001b[22m\u001b[22m\n",
      " [6] \u001b[1mscore\u001b[22m\u001b[22m at \u001b[1m/Users/cedric/.julia/v0.6/GaussianProcesses/src/glue/ScikitLearn.jl:24\u001b[22m\u001b[22m [inlined]\n",
      " [7] \u001b[1m_score\u001b[22m\u001b[22m\u001b[1m(\u001b[22m\u001b[22m::GaussianProcesses.GP, ::Array{Float64,2}, ::Array{Float64,1}, ::ScikitLearnBase.#score\u001b[1m)\u001b[22m\u001b[22m at \u001b[1m/Users/cedric/.julia/v0.6/ScikitLearn/src/cross_validation.jl:651\u001b[22m\u001b[22m\n",
      " [8] \u001b[1m#_fit_and_score#96\u001b[22m\u001b[22m\u001b[1m(\u001b[22m\u001b[22m::Bool, ::Bool, ::String, ::Function, ::GaussianProcesses.GP, ::Array{Float64,2}, ::Array{Float64,1}, ::Function, ::Array{Int64,1}, ::Array{Int64,1}, ::Int64, ::Void, ::Void\u001b[1m)\u001b[22m\u001b[22m at \u001b[1m/Users/cedric/.julia/v0.6/ScikitLearn/src/cross_validation.jl:574\u001b[22m\u001b[22m\n",
      " [9] \u001b[1m(::ScikitLearn.Skcore.##84#85{Int64,Void,GaussianProcesses.GP,Array{Float64,2},Array{Float64,1}})\u001b[22m\u001b[22m\u001b[1m(\u001b[22m\u001b[22m::Tuple{Array{Int64,1},Array{Int64,1}}\u001b[1m)\u001b[22m\u001b[22m at \u001b[1m./<missing>:0\u001b[22m\u001b[22m\n",
      " [10] \u001b[1mcopy!\u001b[22m\u001b[22m\u001b[1m(\u001b[22m\u001b[22m::Array{Float64,1}, ::Base.Generator{Array{Tuple{Array{Int64,1},Array{Int64,1}},1},ScikitLearn.Skcore.##84#85{Int64,Void,GaussianProcesses.GP,Array{Float64,2},Array{Float64,1}}}\u001b[1m)\u001b[22m\u001b[22m at \u001b[1m./abstractarray.jl:572\u001b[22m\u001b[22m\n",
      " [11] \u001b[1m_collect\u001b[22m\u001b[22m\u001b[1m(\u001b[22m\u001b[22m::Type{Float64}, ::Base.Generator{Array{Tuple{Array{Int64,1},Array{Int64,1}},1},ScikitLearn.Skcore.##84#85{Int64,Void,GaussianProcesses.GP,Array{Float64,2},Array{Float64,1}}}, ::Base.HasShape\u001b[1m)\u001b[22m\u001b[22m at \u001b[1m./array.jl:363\u001b[22m\u001b[22m\n",
      " [12] \u001b[1m#cross_val_score#83\u001b[22m\u001b[22m\u001b[1m(\u001b[22m\u001b[22m::Void, ::Int64, ::Int64, ::Int64, ::Void, ::Function, ::GaussianProcesses.GP, ::Array{Float64,2}, ::Array{Float64,1}\u001b[1m)\u001b[22m\u001b[22m at \u001b[1m/Users/cedric/.julia/v0.6/ScikitLearn/src/cross_validation.jl:279\u001b[22m\u001b[22m\n",
      " [13] \u001b[1m(::ScikitLearn.Skcore.#kw##cross_val_score)\u001b[22m\u001b[22m\u001b[1m(\u001b[22m\u001b[22m::Array{Any,1}, ::ScikitLearn.Skcore.#cross_val_score, ::GaussianProcesses.GP, ::Array{Float64,2}, ::Array{Float64,1}\u001b[1m)\u001b[22m\u001b[22m at \u001b[1m./<missing>:0\u001b[22m\u001b[22m\n",
      " [14] \u001b[1minclude_string\u001b[22m\u001b[22m\u001b[1m(\u001b[22m\u001b[22m::String, ::String\u001b[1m)\u001b[22m\u001b[22m at \u001b[1m./loading.jl:515\u001b[22m\u001b[22m\n",
      " [15] \u001b[1minclude_string\u001b[22m\u001b[22m\u001b[1m(\u001b[22m\u001b[22m::Module, ::String, ::String\u001b[1m)\u001b[22m\u001b[22m at \u001b[1m/Users/cedric/.julia/v0.6/Compat/src/Compat.jl:478\u001b[22m\u001b[22m\n",
      " [16] \u001b[1mexecute_request\u001b[22m\u001b[22m\u001b[1m(\u001b[22m\u001b[22m::ZMQ.Socket, ::IJulia.Msg\u001b[1m)\u001b[22m\u001b[22m at \u001b[1m/Users/cedric/.julia/v0.6/IJulia/src/execute_request.jl:154\u001b[22m\u001b[22m\n",
      " [17] \u001b[1meventloop\u001b[22m\u001b[22m\u001b[1m(\u001b[22m\u001b[22m::ZMQ.Socket\u001b[1m)\u001b[22m\u001b[22m at \u001b[1m/Users/cedric/.julia/v0.6/IJulia/src/eventloop.jl:8\u001b[22m\u001b[22m\n",
      " [18] \u001b[1m(::IJulia.##14#17)\u001b[22m\u001b[22m\u001b[1m(\u001b[22m\u001b[22m\u001b[1m)\u001b[22m\u001b[22m at \u001b[1m./task.jl:335\u001b[22m\u001b[22m\n",
      "while loading In[10], in expression starting on line 1\n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "-0.013787821187035315"
      ]
     },
     "execution_count": 10,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "mean(cross_val_score(gp, hcat(X), y, cv=10))"
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Julia 0.6.0 (Programa)",
   "language": "julia",
   "name": "julia-0.6-programa"
  },
  "language_info": {
   "file_extension": ".jl",
   "mimetype": "application/julia",
   "name": "julia",
   "version": "0.6.0"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 1
}
